bfg-common 1.5.229 → 1.5.231

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 (55) hide show
  1. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  2. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  3. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  5. package/assets/localization/local_be.json +8 -4
  6. package/assets/localization/local_en.json +15 -11
  7. package/assets/localization/local_hy.json +8 -4
  8. package/assets/localization/local_kk.json +8 -4
  9. package/assets/localization/local_ru.json +10 -6
  10. package/assets/localization/local_zh.json +8 -4
  11. package/assets/scss/common/normalize.scss +1 -0
  12. package/components/atoms/table/info/lib/models/interfaces.ts +10 -10
  13. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  14. package/components/common/browse/lib/models/interfaces.ts +5 -5
  15. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  16. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  17. package/components/common/diagramMain/lib/models/types.ts +21 -21
  18. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  19. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  20. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  21. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  22. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  23. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  24. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  25. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  26. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  27. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  28. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  29. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  30. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  31. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  32. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  33. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  34. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  35. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  36. package/components/common/diagramMain/port/Ports.vue +47 -47
  37. package/components/common/readyToComplete/New.vue +16 -1
  38. package/components/common/vm/actions/add/New.vue +98 -36
  39. package/components/common/vm/actions/add/lib/config/steps.ts +1 -1
  40. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +14 -3
  41. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +2 -2
  42. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +1 -1
  43. package/components/common/vm/actions/common/select/compatibility/Compatibility.vue +8 -0
  44. package/components/common/vm/actions/common/select/compatibility/New.vue +14 -7
  45. package/components/common/vm/actions/common/select/computeResource/ComputeResource.vue +8 -0
  46. package/components/common/vm/actions/common/select/computeResource/New.vue +29 -7
  47. package/components/common/vm/actions/common/select/createType/New.vue +18 -10
  48. package/components/common/vm/actions/common/select/name/Name.vue +9 -2
  49. package/components/common/vm/actions/common/select/name/New.vue +36 -8
  50. package/components/common/vm/actions/common/select/os/New.vue +16 -10
  51. package/components/common/vm/actions/common/select/storage/Storage.vue +8 -0
  52. package/components/common/vm/actions/common/select/storage/new/New.vue +27 -8
  53. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +9 -9
  54. package/components/common/vm/actions/editSettings/new/New.vue +1 -1
  55. package/package.json +1 -1
@@ -49,7 +49,10 @@
49
49
  >
50
50
  <template #subTitle>
51
51
  <div ref="subTitleBlockName" class="subtitle-block">
52
- <div id="name-alert-wrapper"></div>
52
+ <div
53
+ id="name-alert-wrapper"
54
+ :class="[{ 'mb-4': !isNameAlertWrapperEmpty }]"
55
+ ></div>
53
56
  <ui-wizard-subtitle
54
57
  :sub-title="
55
58
  localization.vmWizard.specifyUniqueNameAndTargetLocationForVm
@@ -68,6 +71,7 @@
68
71
  :data-center="props.dataCenter"
69
72
  @submit="emits('change-name', $event)"
70
73
  @check-name="emits('check-name', $event)"
74
+ @has-errors="isNameAlertWrapperEmpty = $event"
71
75
  />
72
76
  </template>
73
77
  </ui-wizard-block>
@@ -79,14 +83,19 @@
79
83
  :sub-title-height="heightComputeResource"
80
84
  >
81
85
  <template #subTitle>
82
- <div ref="subTitleBlockComputeResource" class="subtitle-block">
83
- <div id="compute-resource-alert-wrapper"></div>
84
- <ui-wizard-subtitle
85
- :sub-title="
86
- localization.vmWizard
87
- .selectDestinationComputeResourceForThisOperation
88
- "
89
- />
86
+ <div ref="subTitleBlockComputeResource">
87
+ <div class="subtitle-block">
88
+ <div
89
+ id="compute-resource-alert-wrapper"
90
+ :class="[{ 'mb-4': !isComputeResourceAlertWrapperEmpty }]"
91
+ ></div>
92
+ <ui-wizard-subtitle
93
+ :sub-title="
94
+ localization.vmWizard
95
+ .selectDestinationComputeResourceForThisOperation
96
+ "
97
+ />
98
+ </div>
90
99
  </div>
91
100
  </template>
92
101
  <template #content>
@@ -107,6 +116,7 @@
107
116
  emits('show-compute-resource-tree', $event)
108
117
  "
109
118
  @clear-compute-resource-tree="emits('clear-compute-resource-tree')"
119
+ @has-errors="isComputeResourceAlertWrapperEmpty = $event"
110
120
  />
111
121
  </template>
112
122
  </ui-wizard-block>
@@ -115,13 +125,18 @@
115
125
  :sub-title-height="heightStorage"
116
126
  >
117
127
  <template #subTitle>
118
- <div ref="subTitleBlockStorage" class="subtitle-block">
119
- <div id="storage-alert-wrapper"></div>
120
- <ui-wizard-subtitle
121
- :sub-title="
122
- localization.vmWizard.selectStorageForConfigurationDiskFiles
123
- "
124
- />
128
+ <div ref="subTitleBlockStorage">
129
+ <div class="subtitle-block">
130
+ <div
131
+ id="storage-alert-wrapper"
132
+ :class="[{ 'mb-4': !isStorageAlertWrapperEmpty }]"
133
+ ></div>
134
+ <ui-wizard-subtitle
135
+ :sub-title="
136
+ localization.vmWizard.selectStorageForConfigurationDiskFiles
137
+ "
138
+ />
139
+ </div>
125
140
  </div>
126
141
  </template>
127
142
  <template #content>
@@ -131,6 +146,7 @@
131
146
  :get-datastore-table-func="props.getDatastoreTableFunc"
132
147
  :storage="props.vmtSettings?.storage"
133
148
  @submit="emits('change-storage', $event)"
149
+ @has-errors="isStorageAlertWrapperEmpty = $event"
134
150
  />
135
151
  </template>
136
152
  </ui-wizard-block>
@@ -146,11 +162,16 @@
146
162
  :sub-title-height="heightCompatibility"
147
163
  >
148
164
  <template #subTitle>
149
- <div ref="subTitleBlockCompatibility" class="subtitle-block">
150
- <div id="compatibility-alert-wrapper"></div>
151
- <ui-wizard-subtitle
152
- :sub-title="localization.vmWizard.compatibilitySubTitle"
153
- />
165
+ <div ref="subTitleBlockCompatibility">
166
+ <div class="subtitle-block">
167
+ <div
168
+ id="compatibility-alert-wrapper"
169
+ :class="[{ 'mb-4': !isCompatibilityAlertWrapperEmpty }]"
170
+ ></div>
171
+ <ui-wizard-subtitle
172
+ :sub-title="localization.vmWizard.compatibilitySubTitle"
173
+ />
174
+ </div>
154
175
  </div>
155
176
  </template>
156
177
  <template #content>
@@ -159,6 +180,7 @@
159
180
  :error-validation-fields="props.errorValidationFields"
160
181
  @change="emits('change-compatibility', $event)"
161
182
  @remove-error-by-title="emits('remove-error-by-title', $event)"
183
+ @has-errors="isCompatibilityAlertWrapperEmpty = $event"
162
184
  />
163
185
  </template>
164
186
  </ui-wizard-block>
@@ -170,15 +192,19 @@
170
192
  :sub-title-height="heightOs"
171
193
  >
172
194
  <template #subTitle>
173
- <div ref="subTitleBlockOs" class="subtitle-block">
174
- <div id="compatibility-alert-wrapper"></div>
175
- <ui-wizard-subtitle
176
- :sub-title="localization.common.chooseGuestOSInstalledVM"
177
- />
195
+ <div ref="subTitleBlockOs">
196
+ <div class="subtitle-block">
197
+ <!-- <div id="compatibility-alert-wrapper"></div>-->
198
+ <ui-wizard-subtitle
199
+ :sub-title="localization.common.chooseGuestOSInstalledVM"
200
+ />
201
+ </div>
178
202
  </div>
179
203
  </template>
180
204
  <template #content>
181
- <div class="select-block-wrap overflow-auto h-full flex flex-col">
205
+ <div
206
+ class="select-block-wrap overflow-auto h-full flex flex-col pb-4"
207
+ >
182
208
  <common-vm-actions-common-select-os
183
209
  v-model:machine-type="vmForm.guestMachineType"
184
210
  v-model:guest-os-family="vmForm.guestOsFamily"
@@ -201,9 +227,7 @@
201
227
  v-if="selectedStep.id === dynamicSteps.customizeHardware"
202
228
  >
203
229
  <template #content>
204
- <div
205
- class="select-block-wrap overflow-auto h-full flex flex-col pr-8"
206
- >
230
+ <div class="select-block-wrap customize-hardware flex flex-col">
207
231
  <common-vm-actions-common-customize-hardware
208
232
  :project="props.project"
209
233
  :vm-name="vmForm.name"
@@ -244,7 +268,9 @@
244
268
  @get-networks-table="emits('get-networks-table', $event)"
245
269
  @get-pci-devices="emits('get-pci-devices')"
246
270
  />
247
- <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-4">
271
+ <div
272
+ class="vm-hardware-version-wrap justify-end flex flex-1 mt-4 mr-8"
273
+ >
248
274
  <span class="vm-hardware-version">{{
249
275
  props.compatibilityInfo
250
276
  }}</span>
@@ -320,16 +346,29 @@
320
346
  </div>
321
347
  </template>
322
348
  </ui-wizard-block>
323
- <ui-wizard-block v-if="selectedStep.id === dynamicSteps.readyComplete">
349
+ <ui-wizard-block
350
+ v-if="selectedStep.id === dynamicSteps.readyComplete"
351
+ :sub-title-height="heightReadyComplete"
352
+ >
353
+ <template #subTitle>
354
+ <div ref="subTitleBlockReadyComplete">
355
+ <div class="subtitle-block">
356
+ <ui-wizard-subtitle
357
+ :sub-title="localization.vmWizard.lastCreateSubtitle"
358
+ />
359
+ </div>
360
+ </div>
361
+ </template>
324
362
  <template #content>
325
363
  <div
326
- class="select-block-wrap overflow-auto h-full flex flex-col pr-8"
364
+ class="select-block-wrap h-full flex flex-col mt-3"
327
365
  >
328
366
  <div v-if="props.isShowPowerOn" class="power-on-by-default-wrap">
329
367
  <ui-checkbox
330
368
  v-model="isPowerOnByDefault"
331
369
  test-id="power-on-by-default"
332
370
  :label-text="localization.common.powerOnByDefault"
371
+ size="md"
333
372
  />
334
373
  </div>
335
374
 
@@ -339,7 +378,7 @@
339
378
  v-if="selectedStep.id === dynamicSteps.readyComplete"
340
379
  :data="props.readyCompleteTableInfo"
341
380
  />
342
- <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-4">
381
+ <div class="vm-hardware-version-wrap justify-end flex flex-1 mt-4 pb-4">
343
382
  <span class="vm-hardware-version">{{
344
383
  props.compatibilityInfo
345
384
  }}</span>
@@ -515,6 +554,15 @@ const { height: heightCompatibility } = useElementSize(
515
554
  )
516
555
  const subTitleBlockOs = ref<HTMLElement | null>(null)
517
556
  const { height: heightOs } = useElementSize(subTitleBlockOs)
557
+ const subTitleBlockReadyComplete = ref<HTMLElement | null>(null)
558
+ const { height: heightReadyComplete } = useElementSize(
559
+ subTitleBlockReadyComplete
560
+ )
561
+
562
+ const isNameAlertWrapperEmpty = ref<boolean>(false)
563
+ const isComputeResourceAlertWrapperEmpty = ref<boolean>(false)
564
+ const isStorageAlertWrapperEmpty = ref<boolean>(false)
565
+ const isCompatibilityAlertWrapperEmpty = ref<boolean>(false)
518
566
  </script>
519
567
 
520
568
  <style>
@@ -531,14 +579,28 @@ const { height: heightOs } = useElementSize(subTitleBlockOs)
531
579
  .subtitle-block {
532
580
  display: flex;
533
581
  flex-direction: column;
534
- row-gap: 16px;
535
582
  border-bottom: 1px solid var(--wizard-line);
536
583
  padding-bottom: 12px;
537
- //margin-bottom: 16px;
538
584
  }
539
585
  .select-block-wrap {
586
+ &.customize-hardware {
587
+ height: inherit;
588
+ max-height: 100%;
589
+ padding-bottom: 40px;
590
+
591
+ :deep(.tabs-wrapper),
592
+ :deep(.errors-alert),
593
+ :deep(.action-wrap) {
594
+ margin-right: 32px;
595
+ }
596
+ :deep(.virtual-hardware-content-block),
597
+ :deep(.vm-options) {
598
+ padding-right: 18px;
599
+ }
600
+ }
540
601
  .vm-hardware-version-wrap {
541
602
  align-items: flex-end;
603
+ text-align: right;
542
604
 
543
605
  .vm-hardware-version {
544
606
  font-size: 13px;
@@ -189,7 +189,7 @@ export const stepsFunc = (
189
189
  id: dynamicSteps.readyComplete,
190
190
  stepName: '',
191
191
  title: localization.common.readyComplete,
192
- subTitle: localization.common.clickFinishStartCreation,
192
+ subTitle: localization.vmWizard.lastCreateSubtitle,
193
193
  status: UI_E_WIZARD_STATUS.INACTIVE,
194
194
  isValid: true,
195
195
  testId: 'vm-ready-complete',
@@ -1,11 +1,17 @@
1
1
  <template>
2
- <div :class="['customize-hardware', themeMode]">
2
+ <div
3
+ :class="[
4
+ 'customize-hardware',
5
+ themeMode,
6
+ { 'alert-show': props.errors.length },
7
+ ]"
8
+ >
3
9
  <ui-tabs
4
10
  v-model="selectedNavItem"
5
11
  :tabs="navItemsLocal"
6
12
  test-id="vm-wizard-tabs"
7
13
  type="underline"
8
- class="navigation mx-8"
14
+ class="navigation"
9
15
  />
10
16
  <ui-alert
11
17
  v-show="props.errors.length"
@@ -13,7 +19,8 @@
13
19
  status="alert-danger"
14
20
  test-id="customize-hardware-alert"
15
21
  class="errors-alert"
16
- @remove="emits('remove-validation-errors')"
22
+ size="md"
23
+ @hide="emits('remove-validation-errors')"
17
24
  />
18
25
 
19
26
  <div v-show="selectedNavItem === 0">
@@ -207,6 +214,10 @@ const themeMode = useLocalStorage('themeMode')
207
214
  display: grid;
208
215
  grid-template-rows: auto minmax(0, 1fr);
209
216
 
217
+ &.alert-show {
218
+ grid-template-rows: auto auto minmax(0, 1fr);
219
+ }
220
+
210
221
  .errors-alert {
211
222
  margin-top: 12px;
212
223
  }
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="virtual-hardware">
3
- <div class="action-wrap py-3 px-8">
3
+ <div class="action-wrap py-3">
4
4
  <span class="device-count">{{ deviceCountText }}</span>
5
5
 
6
6
  <div class="add-device-dropdown-wrap">
@@ -31,7 +31,7 @@
31
31
  </div>
32
32
  </div>
33
33
 
34
- <div class="overflow-auto px-8">
34
+ <div class="overflow-auto virtual-hardware-content-block">
35
35
  <div class="stack-view">
36
36
  <common-vm-actions-common-customize-hardware-virtual-hardware-cpu
37
37
  :max-cpus="props.maxCpus"
@@ -100,7 +100,7 @@ const emits = defineEmits<{
100
100
  flex-direction: column;
101
101
  gap: 12px;
102
102
  margin-top: 20px;
103
- padding: 0 32px 12px;
103
+ padding: 0 0 12px;
104
104
  overflow: auto;
105
105
  }
106
106
  </style>
@@ -30,6 +30,7 @@ const props = defineProps<{
30
30
  const emits = defineEmits<{
31
31
  (event: 'change', value: UI_I_OptionItem): void
32
32
  (event: 'remove-error-by-title', value: string): void
33
+ (event: 'has-errors', value: boolean): void
33
34
  }>()
34
35
 
35
36
  const { $store }: any = useNuxtApp()
@@ -90,6 +91,13 @@ const apiError = computed<string>(() => {
90
91
  )?.error_message || ''
91
92
  )
92
93
  })
94
+ watch(
95
+ apiError,
96
+ (newValue) => {
97
+ emits('has-errors', !newValue.length)
98
+ },
99
+ { immediate: true, deep: true }
100
+ )
93
101
 
94
102
  const onRemoveValidationError = (): void => {
95
103
  emits('remove-error-by-title', 'compatibility')
@@ -13,7 +13,7 @@
13
13
  <h3 class="select-compatibility-description pb-4">
14
14
  {{ props.description }}
15
15
  </h3>
16
- <div class="version-select-wrap flex">
16
+ <div class="version-select-wrap">
17
17
  <div
18
18
  v-for="item in versionsLocal"
19
19
  :key="item.value"
@@ -106,7 +106,7 @@ const versionsLocal = computed(() => {
106
106
  --select-compatibility-description-color: #4d5d69;
107
107
  }
108
108
  :root.dark-theme {
109
- --select-compatibility-bg-color: transparent;
109
+ --select-compatibility-bg-color: #1b2a371f;
110
110
  --select-compatibility-border-color: #e9ebed1f;
111
111
  --select-compatibility-border-hover-color: #e9ebed3d;
112
112
  --select-compatibility-selected-bg-color: #2ba2de14;
@@ -121,33 +121,39 @@ const versionsLocal = computed(() => {
121
121
  .select-compatibility-description {
122
122
  font-size: 13px;
123
123
  color: var(--select-compatibility-description-color);
124
+ line-height: 18px;
124
125
  }
125
126
 
126
127
  .version-select-wrap {
128
+ display: grid;
129
+ grid-template-columns: repeat(3, 32.3%);
127
130
  gap: 12px;
128
131
 
129
132
  .version-select {
130
133
  background-color: var(--select-compatibility-bg-color);
131
- border: 1px solid var(--select-compatibility-border-color);
134
+ box-shadow: inset 0 0 0 1px var(--select-compatibility-border-color);
132
135
  padding: 12px;
133
136
  border-radius: 8px;
134
137
 
135
138
  &:not(.selected):not(.disabled) {
136
139
  cursor: pointer;
137
140
  &:hover {
138
- border-color: var(--select-compatibility-border-hover-color);
141
+ box-shadow: inset 0 0 0 1px
142
+ var(--select-compatibility-border-hover-color);
139
143
  }
140
144
  }
141
145
 
142
146
  &.selected {
143
147
  background-color: var(--select-compatibility-selected-bg-color);
144
- border: 1.5px solid var(--select-compatibility-selected-border-color);
148
+ box-shadow: inset 0 0 0 1.5px
149
+ var(--select-compatibility-selected-border-color);
145
150
  }
146
151
 
147
152
  .description {
148
153
  font-size: 13px;
149
- color: #9da6ad;
154
+ color: #9da6ad !important;
150
155
  margin: 8px 0 0 28px;
156
+ line-height: 18px;
151
157
  }
152
158
 
153
159
  :deep(.radio-label) {
@@ -158,7 +164,8 @@ const versionsLocal = computed(() => {
158
164
 
159
165
  @container (max-width: 600px) {
160
166
  .version-select-wrap {
161
- flex-direction: column;
167
+ grid-template-columns: 1fr;
168
+ padding-bottom: 22px;
162
169
  }
163
170
  }
164
171
  }
@@ -53,6 +53,7 @@ const emits = defineEmits<{
53
53
  (event: 'show-compute-resource-tree', value: UI_I_TreeNode): void
54
54
  (event: 'select-compute-resource-tree', value: UI_I_TreeNode): void
55
55
  (event: 'clear-compute-resource-tree'): void
56
+ (event: 'has-errors', value: boolean): void
56
57
  }>()
57
58
 
58
59
  const { $store }: any = useNuxtApp()
@@ -94,6 +95,13 @@ const showValidationErrors = (text: string): void => {
94
95
  const onRemoveValidationErrors = (): void => {
95
96
  errors.value = []
96
97
  }
98
+ watch(
99
+ errors,
100
+ (newValue) => {
101
+ emits('has-errors', !newValue.length)
102
+ },
103
+ { immediate: true, deep: true }
104
+ )
97
105
 
98
106
  const selectedNode = defineModel<UI_I_TreeNode | null>('modelValue')
99
107
 
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="select-compute-resource">
2
+ <div class="select-compute-resource pb-4">
3
3
  <Teleport to="#compute-resource-alert-wrapper">
4
4
  <ui-alert
5
5
  v-show="props.errors.length"
@@ -7,7 +7,8 @@
7
7
  status="alert-danger"
8
8
  test-id="computed-resource-alert"
9
9
  class="errors-alert"
10
- @remove="emits('remove-validation-errors')"
10
+ size="md"
11
+ @hide="emits('remove-validation-errors')"
11
12
  />
12
13
  </Teleport>
13
14
 
@@ -32,7 +33,7 @@
32
33
  <p class="compatibility">
33
34
  {{ localization.inventorySummary.compatibility }}
34
35
  </p>
35
- <div class="compatibility-message flex-align-center">
36
+ <div class="compatibility-message flex-align-start">
36
37
  <ui-skeleton-item v-if="!selectedNode" width="160px" height="16px" />
37
38
  <template v-else-if="props.compatibilityText[1]">
38
39
  <ui-icon
@@ -40,6 +41,7 @@
40
41
  name="error"
41
42
  width="16"
42
43
  height="16"
44
+ class="icon-compatibility-alert"
43
45
  />
44
46
 
45
47
  <ui-icon
@@ -47,6 +49,7 @@
47
49
  name="success-fill"
48
50
  width="16"
49
51
  height="16"
52
+ class="icon-compatibility-alert"
50
53
  />
51
54
  <span class="compatibility-message-description">{{
52
55
  props.compatibilityText[1]
@@ -92,28 +95,43 @@ const localization = computed<UI_I_Localization>(() => useLocal())
92
95
  --select-compute-resource-border-color: #e9ebed;
93
96
  --select-compute-resource-location-bg-color: #ffffff;
94
97
  --select-compute-resource-compatibility-title-color: #4d5d69;
98
+ --select-compute-resource-compatibilityd-empty-escription-color: #4d5d69;
95
99
  --select-compute-resource-compatibility-description-color: #4d5d69;
96
100
  }
97
101
  :root.dark-theme {
98
102
  --select-compute-resource-border-color: #e9ebed1f;
99
- --select-compute-resource-location-bg-color: transparent;
103
+ --select-compute-resource-location-bg-color: #1b2a371f;
100
104
  --select-compute-resource-compatibility-title-color: #e9eaec;
101
- --select-compute-resource-compatibility-description-color: #9da6ad;
105
+ --select-compute-resource-compatibilityd-empty-escription-color: #9da6ad;
106
+ --select-compute-resource-compatibility-description-color: #e9eaec;
102
107
  }
103
108
  </style>
104
109
  <style scoped lang="scss">
105
110
  .select-compute-resource {
106
111
  .tree-view-wrap {
107
112
  height: 170px;
113
+ max-height: 240px;
108
114
  border-radius: 8px;
109
115
  border: 1px solid var(--select-compute-resource-border-color);
110
- padding: 12px;
116
+ padding: 8px;
111
117
  background-color: var(--select-compute-resource-location-bg-color);
112
118
  margin: 16px 0 24px;
113
119
  overflow: auto;
114
120
 
115
121
  :deep(.tree-content) {
116
122
  padding: 0 !important;
123
+
124
+ .node-wrapper {
125
+ border-radius: 4px;
126
+
127
+ .node-name {
128
+ font-size: 12px;
129
+ margin-left: 8px;
130
+ overflow: hidden;
131
+ text-overflow: ellipsis;
132
+ white-space: nowrap;
133
+ }
134
+ }
117
135
  }
118
136
  }
119
137
 
@@ -129,8 +147,12 @@ const localization = computed<UI_I_Localization>(() => useLocal())
129
147
  border: 1px solid var(--select-compute-resource-border-color);
130
148
  padding: 12px;
131
149
  background-color: var(--select-compute-resource-location-bg-color);
132
- gap: 12px;
150
+ gap: 10px;
133
151
 
152
+ .icon-compatibility-alert {
153
+ min-width: 16px;
154
+ min-height: 16px;
155
+ }
134
156
  .compatibility-message-description {
135
157
  font-size: 13px;
136
158
  color: var(--select-compute-resource-compatibility-description-color);
@@ -17,11 +17,13 @@
17
17
  :test-id="item.testId"
18
18
  :disabled="item.disabled"
19
19
  size="md"
20
- />
21
-
22
- <p class="description">
23
- {{ item.description }}
24
- </p>
20
+ >
21
+ <template #description
22
+ ><p class="description">
23
+ {{ item.description }}
24
+ </p></template
25
+ >
26
+ </ui-radio>
25
27
  </div>
26
28
  </div>
27
29
  </template>
@@ -55,20 +57,25 @@ const props = defineProps<{
55
57
  <style scoped lang="scss">
56
58
  .select-create-type-block {
57
59
  background-color: var(--select-create-type-block-bg-color);
58
- border: 1px solid var(--select-create-type-block-border-color);
60
+ //border: 1px solid var(--select-create-type-block-border-color);
61
+ box-shadow: inset 0 0 0 1px var(--select-create-type-block-border-color);
59
62
  padding: 12px;
60
63
  border-radius: 8px;
61
64
 
62
65
  &:not(.selected):not(.disabled) {
63
66
  cursor: pointer;
64
67
  &:hover {
65
- border-color: var(--select-create-type-block-border-hover-color);
68
+ //border-color: var(--select-create-type-block-border-hover-color);
69
+ box-shadow: inset 0 0 0 1px
70
+ var(--select-create-type-block-border-hover-color);
66
71
  }
67
72
  }
68
73
 
69
74
  &.selected {
70
75
  background-color: var(--select-create-type-block-selected-bg-color);
71
- border: 1.5px solid var(--select-create-type-block-selected-border-color);
76
+ //border: 1.5px solid var(--select-create-type-block-selected-border-color);
77
+ box-shadow: inset 0 0 0 1.5px
78
+ var(--select-create-type-block-selected-border-color);
72
79
  }
73
80
 
74
81
  &:not(:last-child) {
@@ -77,8 +84,9 @@ const props = defineProps<{
77
84
 
78
85
  .description {
79
86
  font-size: 13px;
80
- color: #9da6ad;
81
- margin: 8px 0 0 28px;
87
+ color: #9da6ad !important;
88
+ //margin: 8px 0 0 28px;
89
+ line-height: 18px;
82
90
  }
83
91
  }
84
92
  </style>
@@ -40,6 +40,7 @@ const emits = defineEmits<{
40
40
  event: 'check-name',
41
41
  value: [[string, UI_I_TreeNode | null], (error: any) => void]
42
42
  ): void
43
+ (event: 'has-errors', value: boolean): void
43
44
  }>()
44
45
 
45
46
  const { $store }: any = useNuxtApp()
@@ -145,6 +146,13 @@ const showValidationErrors = (data: string[]): void => {
145
146
  const onRemoveValidationErrors = (): void => {
146
147
  errors.value = []
147
148
  }
149
+ watch(
150
+ errors,
151
+ (newValue) => {
152
+ emits('has-errors', !newValue.length)
153
+ },
154
+ { immediate: true, deep: true }
155
+ )
148
156
 
149
157
  watch(
150
158
  () => props.show,
@@ -163,5 +171,4 @@ watch(
163
171
  const isShowHelp = ref<boolean>(false)
164
172
  </script>
165
173
 
166
- <style scoped lang="scss">
167
- </style>
174
+ <style scoped lang="scss"></style>