bfg-common 1.5.756 → 1.5.759

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 (27) hide show
  1. package/assets/localization/local_be.json +4 -2
  2. package/assets/localization/local_en.json +4 -2
  3. package/assets/localization/local_hy.json +4 -2
  4. package/assets/localization/local_kk.json +4 -2
  5. package/assets/localization/local_ru.json +8 -6
  6. package/assets/localization/local_zh.json +3 -1
  7. package/components/common/pages/backups/backupsNew/BackupsNew.vue +19 -107
  8. package/components/common/pages/backups/backupsNew/contextMenuView/ContextMenuView.vue +10 -16
  9. package/components/common/pages/backups/modals/createBackup/New.vue +22 -9
  10. package/components/common/pages/backups/modals/createBackup/configuration/ConfigurationNew.vue +17 -3
  11. package/components/common/pages/backups/modals/createBackup/configuration/backupWindow/BackupWindow.vue +29 -29
  12. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/MaxBandwidth.vue +69 -69
  13. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  14. package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue +38 -38
  15. package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/lib/config/table.ts +8 -8
  16. package/components/common/pages/backups/modals/createBackup/disks/tableView/new/TableView.vue +1 -1
  17. package/components/common/pages/backups/modals/createBackup/disks/tableView/new/lib/config/table.ts +7 -7
  18. package/components/common/pages/backups/modals/createBackup/general/GeneralNew.vue +1 -1
  19. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +5 -5
  20. package/components/common/pages/backups/modals/createBackup/lib/config/steps.ts +1 -1
  21. package/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions.ts +14 -2
  22. package/components/common/pages/backups/modals/createBackup/lib/models/interfaces.ts +8 -8
  23. package/components/common/pages/backups/modals/createBackup/lib/validation/validations.ts +6 -6
  24. package/components/common/vm/snapshots/new/New.vue +12 -11
  25. package/components/common/vm/snapshots/new/Skeleton.vue +2 -26
  26. package/package.json +1 -1
  27. package/components/common/pages/backups/backupsNew/Skeleton.vue +0 -136
@@ -1,29 +1,29 @@
1
- <template>
2
- <atoms-stack-block
3
- :has-children="false"
4
- test-id="backup-window-stack-block"
5
- >
6
- <template #stackBlockKey>
7
- <span>{{ localization.common.backupWindow }}</span>
8
- </template>
9
- <template #stackBlockContent>
10
- <input
11
- v-model="model.start_window_min"
12
- data-id="hours-input"
13
- type="number"
14
- class="hrs"
15
- />
16
- </template>
17
- </atoms-stack-block>
18
- </template>
19
-
20
- <script lang="ts" setup>
21
- import type { UI_I_Localization } from '~/lib/models/interfaces'
22
- import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
23
-
24
- const model = defineModel<UI_I_CreateBackupForm>({ required: true })
25
-
26
- const localization = computed<UI_I_Localization>(() => useLocal())
27
- </script>
28
-
29
- <style lang="scss" scoped></style>
1
+ <template>
2
+ <atoms-stack-block
3
+ :has-children="false"
4
+ test-id="backup-window-stack-block"
5
+ >
6
+ <template #stackBlockKey>
7
+ <span>{{ localization.common.backupWindow }}</span>
8
+ </template>
9
+ <template #stackBlockContent>
10
+ <input
11
+ v-model="model.start_window_min"
12
+ data-id="hours-input"
13
+ type="number"
14
+ class="hrs"
15
+ />
16
+ </template>
17
+ </atoms-stack-block>
18
+ </template>
19
+
20
+ <script lang="ts" setup>
21
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
22
+ import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
23
+
24
+ const model = defineModel<UI_I_CreateBackupForm>({ required: true })
25
+
26
+ const localization = computed<UI_I_Localization>(() => useLocal())
27
+ </script>
28
+
29
+ <style lang="scss" scoped></style>
@@ -1,69 +1,69 @@
1
- <template>
2
- <atoms-stack-block
3
- :has-children="false"
4
- test-id="backup-max-bandwidth-stack-block"
5
- >
6
- <template #stackBlockKey>
7
- <span>{{ localization.common.maxBandwidth }}</span>
8
- </template>
9
- <template #stackBlockContent>
10
- <div class="flex-align-center">
11
- <input
12
- v-model="maxBindwidthLocal"
13
- data-id="mbps-input"
14
- type="number"
15
- class="mbps"
16
- />
17
-
18
- <common-select-input
19
- v-model="selectedType"
20
- :data="maxBandwidthOptionsLocal"
21
- test-id="backup-max-bandwidth-type"
22
- class="ml-1"
23
- />
24
- </div>
25
- </template>
26
- </atoms-stack-block>
27
- </template>
28
-
29
- <script lang="ts" setup>
30
- import type { UI_I_Localization } from '~/lib/models/interfaces'
31
- import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
32
- import type { UI_T_BandwidthOption } from '~/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/models/types'
33
- import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
34
- import { maxBandwidthOptions } from '~/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options'
35
-
36
- const model = defineModel<UI_I_CreateBackupForm>({ required: true })
37
-
38
- const localization = computed<UI_I_Localization>(() => useLocal())
39
- const { $binary }: any = useNuxtApp()
40
-
41
- const maxBandwidthOptionsLocal =
42
- ref<UI_I_SelectInputItem[]>(maxBandwidthOptions)
43
-
44
- const maxBindwidthLocal = computed<number>({
45
- get() {
46
- return selectedType.value === 1
47
- ? $binary.bToGb(model.value.bandwidth_limit)
48
- : $binary.bToMb(model.value.bandwidth_limit)
49
- },
50
- set(newValue: number) {
51
- model.value.bandwidth_limit =
52
- selectedType.value === 1
53
- ? $binary.gbToB(newValue)
54
- : $binary.mbToB(newValue)
55
- },
56
- })
57
-
58
- const selectedType = ref<UI_T_BandwidthOption>(0)
59
- watch(selectedType, (newValue) => {
60
- if (newValue === 1) model.value.bandwidth_limit *= 1_024
61
- else model.value.bandwidth_limit /= 1_024
62
- })
63
- </script>
64
-
65
- <style lang="scss" scoped>
66
- #backup-transaction-logs {
67
- margin: 4px 4px 0 0;
68
- }
69
- </style>
1
+ <template>
2
+ <atoms-stack-block
3
+ :has-children="false"
4
+ test-id="backup-max-bandwidth-stack-block"
5
+ >
6
+ <template #stackBlockKey>
7
+ <span>{{ localization.common.maxBandwidth }}</span>
8
+ </template>
9
+ <template #stackBlockContent>
10
+ <div class="flex-align-center">
11
+ <input
12
+ v-model="maxBindwidthLocal"
13
+ data-id="mbps-input"
14
+ type="number"
15
+ class="mbps"
16
+ />
17
+
18
+ <common-select-input
19
+ v-model="selectedType"
20
+ :data="maxBandwidthOptionsLocal"
21
+ test-id="backup-max-bandwidth-type"
22
+ class="ml-1"
23
+ />
24
+ </div>
25
+ </template>
26
+ </atoms-stack-block>
27
+ </template>
28
+
29
+ <script lang="ts" setup>
30
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
31
+ import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
32
+ import type { UI_T_BandwidthOption } from '~/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/models/types'
33
+ import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
34
+ import { maxBandwidthOptions } from '~/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options'
35
+
36
+ const model = defineModel<UI_I_CreateBackupForm>({ required: true })
37
+
38
+ const localization = computed<UI_I_Localization>(() => useLocal())
39
+ const { $binary }: any = useNuxtApp()
40
+
41
+ const maxBandwidthOptionsLocal =
42
+ ref<UI_I_SelectInputItem[]>(maxBandwidthOptions)
43
+
44
+ const maxBindwidthLocal = computed<number>({
45
+ get() {
46
+ return selectedType.value === 1
47
+ ? $binary.bToGb(model.value.bandwidth_limit)
48
+ : $binary.bToMb(model.value.bandwidth_limit)
49
+ },
50
+ set(newValue: number) {
51
+ model.value.bandwidth_limit =
52
+ selectedType.value === 1
53
+ ? $binary.gbToB(newValue)
54
+ : $binary.mbToB(newValue)
55
+ },
56
+ })
57
+
58
+ const selectedType = ref<UI_T_BandwidthOption>(0)
59
+ watch(selectedType, (newValue) => {
60
+ if (newValue === 1) model.value.bandwidth_limit *= 1_024
61
+ else model.value.bandwidth_limit /= 1_024
62
+ })
63
+ </script>
64
+
65
+ <style lang="scss" scoped>
66
+ #backup-transaction-logs {
67
+ margin: 4px 4px 0 0;
68
+ }
69
+ </style>
@@ -1,6 +1,6 @@
1
- import type {UI_I_SelectInputItem} from "~/components/common/select/input/lib/models/interfaces";
2
-
3
- export const maxBandwidthOptions: UI_I_SelectInputItem[] = [
4
- { label: 'Mbps', value: 0 },
5
- { label: 'Gbps', value: 1 },
6
- ]
1
+ import type {UI_I_SelectInputItem} from "~/components/common/select/input/lib/models/interfaces";
2
+
3
+ export const maxBandwidthOptions: UI_I_SelectInputItem[] = [
4
+ { label: 'Mbps', value: 0 },
5
+ { label: 'Gbps', value: 1 },
6
+ ]
@@ -1,38 +1,38 @@
1
- <template>
2
- <atoms-stack-block
3
- :has-children="false"
4
- test-id="backup-strategy-stack-block"
5
- >
6
- <template #stackBlockKey>
7
- <span>{{ localization.common.strategy }}</span>
8
- </template>
9
- <template #stackBlockContent>
10
- <common-select-input
11
- v-model="model.strategy"
12
- :data="strategyOptions"
13
- test-id="backup-strategy"
14
- />
15
- </template>
16
- </atoms-stack-block>
17
- </template>
18
-
19
- <script lang="ts" setup>
20
- import type { UI_I_Localization } from '~/lib/models/interfaces'
21
- import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
22
- import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
23
- import { strategyOptionsFunc } from '~/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions'
24
-
25
- const model = defineModel<UI_I_CreateBackupForm>({ required: true })
26
-
27
- const localization = computed<UI_I_Localization>(() => useLocal())
28
-
29
- const strategyOptions = ref<UI_I_SelectInputItem[]>(
30
- strategyOptionsFunc(localization.value)
31
- )
32
- </script>
33
-
34
- <style lang="scss" scoped>
35
- #backup-transaction-logs {
36
- margin: 4px 4px 0 0;
37
- }
38
- </style>
1
+ <template>
2
+ <atoms-stack-block
3
+ :has-children="false"
4
+ test-id="backup-strategy-stack-block"
5
+ >
6
+ <template #stackBlockKey>
7
+ <span>{{ localization.common.strategy }}</span>
8
+ </template>
9
+ <template #stackBlockContent>
10
+ <common-select-input
11
+ v-model="model.strategy"
12
+ :data="strategyOptions"
13
+ test-id="backup-strategy"
14
+ />
15
+ </template>
16
+ </atoms-stack-block>
17
+ </template>
18
+
19
+ <script lang="ts" setup>
20
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
21
+ import type { UI_I_CreateBackupForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
22
+ import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
23
+ import { strategyOptionsFunc } from '~/components/common/pages/backups/modals/createBackup/lib/config/strategyOptions'
24
+
25
+ const model = defineModel<UI_I_CreateBackupForm>({ required: true })
26
+
27
+ const localization = computed<UI_I_Localization>(() => useLocal())
28
+
29
+ const strategyOptions = ref<UI_I_SelectInputItem[]>(
30
+ strategyOptionsFunc(localization.value)
31
+ )
32
+ </script>
33
+
34
+ <style lang="scss" scoped>
35
+ #backup-transaction-logs {
36
+ margin: 4px 4px 0 0;
37
+ }
38
+ </style>
@@ -7,7 +7,7 @@ import type { UI_I_Localization } from '~/lib/models/interfaces'
7
7
  import type {
8
8
  UI_I_BackupDatastore,
9
9
  } from '~/components/common/pages/backups/modals/lib/models/interfaces'
10
- import { datastoreLocalizationByState } from '~/components/common/lib/config/states'
10
+ import {backupStorageIconByState, datastoreLocalizationByState} from '~/components/common/lib/config/states'
11
11
  import type {
12
12
  I_BackupDatastoreChipStatus
13
13
  } from "~/components/common/pages/backups/modals/createBackup/datastores/tableView/new/lib/models/interfaces";
@@ -22,7 +22,7 @@ export const getHeaderDataFunc = (
22
22
  text: localization.common.name,
23
23
  isSortable: true,
24
24
  sort: 'asc',
25
- width: '104px',
25
+ width: '160px',
26
26
  show: true,
27
27
  filter: true
28
28
  },
@@ -32,7 +32,7 @@ export const getHeaderDataFunc = (
32
32
  text: localization.common.state,
33
33
  isSortable: true,
34
34
  sort: 'asc',
35
- width: '128px',
35
+ width: '160px',
36
36
  show: true,
37
37
  filter: true
38
38
  },
@@ -42,7 +42,7 @@ export const getHeaderDataFunc = (
42
42
  text: localization.common.capacity,
43
43
  isSortable: true,
44
44
  sort: 'asc',
45
- width: '96px',
45
+ width: '120px',
46
46
  show: true,
47
47
  filter: true
48
48
  },
@@ -52,7 +52,7 @@ export const getHeaderDataFunc = (
52
52
  text: localization.common.provisioned,
53
53
  isSortable: true,
54
54
  sort: 'asc',
55
- width: '96px',
55
+ width: '128px',
56
56
  show: true,
57
57
  filter: true
58
58
  },
@@ -82,7 +82,7 @@ export const getHeaderDataFunc = (
82
82
  text: localization.common.type,
83
83
  isSortable: true,
84
84
  sort: 'asc',
85
- width: '80',
85
+ width: '104px',
86
86
  show: true,
87
87
  filter: true
88
88
  },
@@ -92,7 +92,7 @@ export const getHeaderDataFunc = (
92
92
  text: localization.common.location,
93
93
  isSortable: true,
94
94
  sort: 'asc',
95
- width: '160px',
95
+ width: '184px',
96
96
  show: true,
97
97
  filter: true
98
98
  }
@@ -179,7 +179,7 @@ export const getBodyDataFunc = (
179
179
  col: 'col0',
180
180
  text: datastore.name,
181
181
  data: {
182
- iconClassName: [3, 5, 6].includes(datastore.state) ? 'vsphere-icon-datastore-error' : 'vsphere-icon-datastore',
182
+ iconClassName: `icon-${backupStorageIconByState[datastore.state]}`,
183
183
  id: datastore.id
184
184
  }
185
185
  },
@@ -61,7 +61,7 @@ const texts = computed<UI_I_TableTexts>(() => ({
61
61
  searchHere: localization.value.common.searchHere,
62
62
  rowsPerPage: localization.value.common.rowsPerPage,
63
63
  of: localization.value.common.of,
64
- selected: localization.value.common.selected,
64
+ selected: localization.value.common.selected2,
65
65
  columns: localization.value.common.columns,
66
66
  previous: localization.value.common.previous,
67
67
  next: localization.value.common.next,
@@ -19,7 +19,7 @@ export const getHeaderDataFunc = (
19
19
  text: localization.common.source,
20
20
  isSortable: true,
21
21
  sort: 'asc',
22
- width: '368px',
22
+ width: '352px',
23
23
  show: true,
24
24
  filter: true
25
25
  },
@@ -29,7 +29,7 @@ export const getHeaderDataFunc = (
29
29
  text: localization.common.deviceType,
30
30
  isSortable: true,
31
31
  sort: 'asc',
32
- width: '136px',
32
+ width: '160px',
33
33
  show: true,
34
34
  filter: true
35
35
  },
@@ -39,7 +39,7 @@ export const getHeaderDataFunc = (
39
39
  text: localization.common.bus,
40
40
  isSortable: true,
41
41
  sort: 'asc',
42
- width: '112px',
42
+ width: '136px',
43
43
  show: true,
44
44
  filter: true
45
45
  },
@@ -49,7 +49,7 @@ export const getHeaderDataFunc = (
49
49
  text: localization.common.target,
50
50
  isSortable: true,
51
51
  sort: 'asc',
52
- width: '112px',
52
+ width: '136px',
53
53
  show: true,
54
54
  filter: true
55
55
  },
@@ -59,7 +59,7 @@ export const getHeaderDataFunc = (
59
59
  text: localization.common.capacity,
60
60
  isSortable: true,
61
61
  sort: 'asc',
62
- width: '112px',
62
+ width: '136px',
63
63
  show: true,
64
64
  filter: true
65
65
  },
@@ -69,7 +69,7 @@ export const getHeaderDataFunc = (
69
69
  text: localization.common.used,
70
70
  isSortable: true,
71
71
  sort: 'asc',
72
- width: '112px',
72
+ width: '136px',
73
73
  show: true,
74
74
  filter: true
75
75
  },
@@ -79,7 +79,7 @@ export const getHeaderDataFunc = (
79
79
  text: localization.common.free,
80
80
  isSortable: true,
81
81
  sort: 'asc',
82
- width: '112px',
82
+ width: '136px',
83
83
  show: true,
84
84
  filter: true
85
85
  },
@@ -30,7 +30,7 @@
30
30
  v-model="model.description"
31
31
  :placeholder="localization.common.description"
32
32
  test-id="vm-backup-name-input"
33
- height="84"
33
+ height="92"
34
34
  />
35
35
  </div>
36
36
  </div>
@@ -18,12 +18,12 @@ export const readyToCompleteOptions = (
18
18
  // General
19
19
  {
20
20
  label: localization.common.name,
21
- value: backupForm.name,
21
+ value: backupForm.name || '--',
22
22
  iconClassName: 'icon-backup',
23
23
  },
24
24
  {
25
25
  label: localization.common.description,
26
- value: backupForm.description,
26
+ value: backupForm.description || '--',
27
27
  },
28
28
  ]
29
29
 
@@ -31,7 +31,7 @@ export const readyToCompleteOptions = (
31
31
  backupForm.disk_devices.forEach((disk_device, i) => {
32
32
  result.push({
33
33
  label: `${localization.common.disk} ${i + 1}`,
34
- value: disk_device.location,
34
+ value: disk_device.location || '--',
35
35
  iconClassName: 'icon-vSphere-dsVmDisk',
36
36
  })
37
37
  })
@@ -42,7 +42,7 @@ export const readyToCompleteOptions = (
42
42
  )
43
43
  result.push({
44
44
  label: localization.common.datastore,
45
- value: datastore?.name || '',
45
+ value: datastore?.name || '--',
46
46
  iconClassName: 'vsphere-icon-datastore',
47
47
  })
48
48
 
@@ -51,7 +51,7 @@ export const readyToCompleteOptions = (
51
51
  label: localization.common.strategy,
52
52
  value:
53
53
  strategyOptions.find((option) => option.value === backupForm.strategy)
54
- ?.label || '',
54
+ ?.label || '--',
55
55
  })
56
56
 
57
57
  const gbSizeByB = 1_073_741_824
@@ -62,7 +62,7 @@ export const stepsFunc = (
62
62
  stepName: '',
63
63
  title: localization.common.datastores,
64
64
 
65
- subTitle: localization.common.selectStorageConfigurationDiskFiles2,
65
+ subTitle: localization.common.selectBackupStorageConfigurationDiskFiles,
66
66
  status: UI_E_WIZARD_STATUS.INACTIVE,
67
67
  isValid: true,
68
68
  fields: {
@@ -2,12 +2,24 @@ import type { UI_I_Localization } from '~/lib/models/interfaces'
2
2
  import type { UI_I_SelectInputItem } from '~/components/common/select/input/lib/models/interfaces'
3
3
 
4
4
  export const strategyOptionsFunc = (
5
- localization: UI_I_Localization
5
+ localization: UI_I_Localization
6
6
  ): UI_I_SelectInputItem[] => {
7
- return [
7
+ const { $text } = useNuxtApp()
8
+ const isLangEn = useLocalStorage('lang') === 'en_US'
9
+
10
+ let labels = [
8
11
  { label: localization.common.fullBackup, value: 0 },
9
12
  { label: localization.common.incrementalBackup, value: 1 },
10
13
  { label: localization.common.differentialBackup, value: 2 },
11
14
  ]
15
+
16
+ if(isLangEn) {
17
+ labels = labels.map((item) => ({
18
+ ...item,
19
+ label: $text.toCapitalizeEveryWord(item.label)
20
+ }))
21
+ }
22
+
23
+ return labels
12
24
  }
13
25
 
@@ -1,8 +1,8 @@
1
- export interface UI_I_DynamicSteps {
2
- general: number
3
- disks: number
4
- datastores: number
5
- configuration: number
6
- readyComplete: number
7
- schedulingOptions: number
8
- }
1
+ export interface UI_I_DynamicSteps {
2
+ general: number
3
+ disks: number
4
+ datastores: number
5
+ configuration: number
6
+ readyComplete: number
7
+ schedulingOptions: number
8
+ }
@@ -20,7 +20,7 @@ export const checkName = async (
20
20
  if (!name) {
21
21
  stepHasError = wizard.setValidation(dynamicSteps.general, 'name', {
22
22
  fieldMessage: localization.common.fieldRequired,
23
- alertMessage: localization.common.fieldRequired
23
+ alertMessage: ''
24
24
  })
25
25
  wizard.setLoader(false)
26
26
  return {
@@ -53,7 +53,7 @@ export const checkName = async (
53
53
 
54
54
  if (stepErrorMessage) {
55
55
  stepHasError = wizard.setValidation(dynamicSteps.general, 'name', {
56
- fieldMessage: stepErrorMessage,
56
+ fieldMessage: ' ',
57
57
  alertMessage: stepErrorMessage
58
58
  })
59
59
  } else if (wizard.hasMessage(dynamicSteps.general, 'name')) {
@@ -82,8 +82,8 @@ export const checkDisks = (
82
82
 
83
83
  if (!isValidStores) {
84
84
  stepHasError = wizard.setValidation(dynamicSteps.disks, 'disk_devices', {
85
- fieldMessage: localization.common.diskIsRequired,
86
- alertMessage: localization.common.diskIsRequired
85
+ fieldMessage: localization.common.selectLeastOneDisk,
86
+ alertMessage: localization.common.selectLeastOneDisk
87
87
  })
88
88
  } else if (wizard.hasMessage(dynamicSteps.disks, 'disk_devices')) {
89
89
  value = wizard.removeValidation(dynamicSteps.disks, 'disk_devices', value)
@@ -106,8 +106,8 @@ export const checkDatastore = (
106
106
 
107
107
  if (!isValidStorage) {
108
108
  stepHasError = wizard.setValidation(dynamicSteps.datastores, 'backup_storage', {
109
- fieldMessage: localization.common.datastoreIsRequired,
110
- alertMessage: localization.common.datastoreIsRequired
109
+ fieldMessage: localization.common.selectBackupStorageToProceed,
110
+ alertMessage: localization.common.selectBackupStorageToProceed
111
111
  })
112
112
  } else if (wizard.hasMessage(dynamicSteps.datastores, 'backup_storage')) {
113
113
  value = wizard.removeValidation(dynamicSteps.datastores, 'backup_storage', value)
@@ -227,7 +227,6 @@
227
227
  </template>
228
228
 
229
229
  <script setup lang="ts">
230
- import { useTemplateRef } from 'vue'
231
230
  import { useElementSize } from '@vueuse/core'
232
231
  import type { UI_I_InfoBlock } from '~/node_modules/bfg-uikit/components/ui/infoBlock/models/interfaces'
233
232
  import type { UI_I_Localization } from '~/lib/models/interfaces'
@@ -269,14 +268,19 @@ const onSelectContextMenuItem = (actionType: UI_T_SnapshotActionType): void => {
269
268
  emits('show-modal', actionType)
270
269
  }
271
270
 
272
- const detailsElement = useTemplateRef<HTMLDivElement>('detailsScrollBlock')
273
- const { height } = useElementSize(detailsElement)
271
+ const detailsScrollBlock = ref<HTMLElement | null>(null)
272
+ const { height } = useElementSize(detailsScrollBlock)
273
+ const hasScroll = ref<boolean>(false)
274
+ const checkScroll = (): void => {
275
+ const element = detailsScrollBlock.value
276
+ if (element) {
277
+ hasScroll.value = element.scrollHeight > element.clientHeight
278
+ }
279
+ }
274
280
 
275
- const hasScroll = computed<boolean>(
276
- () =>
277
- height.value &&
278
- detailsElement.value?.scrollHeight > detailsElement.value?.clientHeight
279
- )
281
+ watch(height, () => {
282
+ checkScroll()
283
+ })
280
284
  </script>
281
285
 
282
286
  <style>
@@ -429,9 +433,6 @@ const hasScroll = computed<boolean>(
429
433
  line-height: 18px;
430
434
  text-align: right;
431
435
  }
432
- :deep(.ui-main-info-block-item) {
433
- grid-column-gap: 10px;
434
- }
435
436
  :deep(.ui-main-info-block-item-right) {
436
437
  white-space: unset !important;
437
438
  max-width: 50%;