bfg-common 1.5.746 → 1.5.748

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 (116) 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 +16 -10
  7. package/assets/localization/local_en.json +16 -10
  8. package/assets/localization/local_hy.json +16 -10
  9. package/assets/localization/local_kk.json +16 -10
  10. package/assets/localization/local_ru.json +16 -10
  11. package/assets/localization/local_zh.json +16 -10
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/nav/NavBar.vue +1 -0
  15. package/components/atoms/perPage/PerPage.vue +58 -58
  16. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  17. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  18. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  19. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  20. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  21. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  22. package/components/common/browse/lib/models/interfaces.ts +5 -5
  23. package/components/common/diagramMain/network/Contents.vue +497 -497
  24. package/components/common/graph/graphNew/EmptyBlock.vue +2 -1
  25. package/components/common/layout/console/Console.vue +70 -70
  26. package/components/common/layout/theHeader/feedback/new/email/Email.vue +2 -2
  27. package/components/common/layout/theHeader/userMenu/modals/changePassword/lib/utils.ts +2 -2
  28. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  29. package/components/common/monitor/overview/OverviewNew.vue +1 -1
  30. package/components/common/pages/backups/DetailView.vue +52 -52
  31. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  32. package/components/common/pages/backups/modals/Modals.vue +243 -243
  33. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  34. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  35. package/components/common/pages/backups/modals/lib/config/restore.ts +116 -116
  36. package/components/common/pages/backups/modals/lib/models/interfaces.ts +187 -187
  37. package/components/common/pages/backups/modals/restore/Restore.vue +302 -302
  38. package/components/common/pages/backups/modals/restore/disks/Disks.vue +50 -50
  39. package/components/common/pages/backups/modals/restore/lib/config/readyToCompleteOptions.ts +94 -94
  40. package/components/common/pages/backups/modals/restore/lib/config/steps.ts +130 -130
  41. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  42. package/components/common/pages/backups/modals/restore/types/New.vue +95 -95
  43. package/components/common/pages/backups/modals/restore/types/Old.vue +62 -62
  44. package/components/common/pages/backups/modals/restore/types/Types.vue +31 -31
  45. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  46. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  47. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  48. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  49. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  50. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  51. package/components/common/pages/tasks/Tasks.vue +125 -125
  52. package/components/common/pages/tasks/table/Table.vue +373 -373
  53. package/components/common/pages/tasks/table/lib/config/config.ts +279 -279
  54. package/components/common/pages/tasks/table/lib/models/interfaces.ts +9 -9
  55. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  56. package/components/common/select/radio/RadioGroup.vue +137 -137
  57. package/components/common/spiceConsole/Drawer.vue +420 -420
  58. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  59. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  60. package/components/common/tools/Actions.vue +207 -207
  61. package/components/common/treeView/TreeView.vue +52 -52
  62. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  63. package/components/common/vm/actions/clone/new/New.vue +438 -438
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  66. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  67. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  68. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  69. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  70. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  71. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  72. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  73. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  74. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  75. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  76. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  77. package/components/common/vm/snapshots/modals/confirm/New.vue +9 -8
  78. package/components/common/vm/snapshots/modals/takeOrEdit/new/New.vue +1 -1
  79. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  80. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  81. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  82. package/components/common/wizards/common/steps/name/New.vue +221 -221
  83. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  84. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  85. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  86. package/components/common/wizards/datastore/add/Add.vue +227 -227
  87. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  88. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  89. package/components/common/wizards/network/add/Add.vue +870 -870
  90. package/components/common/wizards/vm/migrate/steps/selectStorage/configure/disk/table/old/lib/config/diskTable.ts +11 -1
  91. package/composables/useAppVersion.ts +21 -21
  92. package/composables/useBrowse.ts +24 -24
  93. package/composables/useLocal.ts +6 -6
  94. package/composables/useLocalCommon.ts +39 -39
  95. package/lib/config/regExp.ts +1 -1
  96. package/lib/models/types.ts +59 -59
  97. package/package.json +1 -1
  98. package/plugins/console.ts +21 -21
  99. package/plugins/mouse.ts +21 -21
  100. package/plugins/panelStates.ts +70 -70
  101. package/plugins/text.ts +59 -59
  102. package/plugins/time.ts +58 -58
  103. package/plugins/validation.ts +6 -6
  104. package/public/spice-console/application/clientgui.js +854 -854
  105. package/public/spice-console/application/packetfactory.js +211 -211
  106. package/public/spice-console/application/virtualmouse.js +147 -147
  107. package/public/spice-console/lib/images/bitmap.js +203 -203
  108. package/public/spice-console/network/spicechannel.js +440 -440
  109. package/public/spice-console/process/cursorprocess.js +128 -128
  110. package/public/spice-console/process/inputprocess.js +227 -227
  111. package/public/spice-console/process/mainprocess.js +212 -212
  112. package/public/spice-console/run.js +210 -210
  113. package/store/main/mutations.ts +7 -7
  114. package/store/main/state.ts +7 -7
  115. package/store/tasks/mappers/recentTasks.ts +123 -123
  116. package/store/tasks/mutations.ts +82 -82
@@ -1,50 +1,50 @@
1
- <template>
2
- <div class="select-template">
3
- <atoms-alert
4
- v-show="props.errors.length"
5
- :items="props.errors"
6
- status="alert-danger"
7
- test-id="template-alert"
8
- @remove="emits('remove')"
9
- />
10
-
11
- <p class="template-description">
12
- {{ localization.vmWizard.selectTemplateForCreatingVm }}
13
- </p>
14
- <div class="tree-view-wrap">
15
- <common-vm-actions-common-select-template-tree-view
16
- :templates-tree="props.templatesTree"
17
- @select-node="emits('select', $event)"
18
- />
19
- </div>
20
- </div>
21
- </template>
22
-
23
- <script setup lang="ts">
24
- import type { UI_I_Localization } from '~/lib/models/interfaces'
25
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
26
-
27
- const props = defineProps<{
28
- templatesTree: UI_I_TreeNode[]
29
- errors: string[]
30
- }>()
31
-
32
- const emits = defineEmits<{
33
- (event: 'remove'): void
34
- (event: 'select', value: UI_I_TreeNode): void
35
- }>()
36
-
37
- const localization = computed<UI_I_Localization>(() => useLocal())
38
- </script>
39
-
40
- <style scoped lang="scss">
41
- .tree-view-wrap {
42
- position: relative;
43
- border: 1px solid #000;
44
- padding: 5px;
45
- max-height: 300px;
46
- min-height: 200px;
47
- overflow: auto;
48
- margin-bottom: 10px;
49
- }
50
- </style>
1
+ <template>
2
+ <div class="select-template">
3
+ <atoms-alert
4
+ v-show="props.errors.length"
5
+ :items="props.errors"
6
+ status="alert-danger"
7
+ test-id="template-alert"
8
+ @remove="emits('remove')"
9
+ />
10
+
11
+ <p class="template-description">
12
+ {{ localization.vmWizard.selectTemplateForCreatingVm }}
13
+ </p>
14
+ <div class="tree-view-wrap">
15
+ <common-vm-actions-common-select-template-tree-view
16
+ :templates-tree="props.templatesTree"
17
+ @select-node="emits('select', $event)"
18
+ />
19
+ </div>
20
+ </div>
21
+ </template>
22
+
23
+ <script setup lang="ts">
24
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
25
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
26
+
27
+ const props = defineProps<{
28
+ templatesTree: UI_I_TreeNode[]
29
+ errors: string[]
30
+ }>()
31
+
32
+ const emits = defineEmits<{
33
+ (event: 'remove'): void
34
+ (event: 'select', value: UI_I_TreeNode): void
35
+ }>()
36
+
37
+ const localization = computed<UI_I_Localization>(() => useLocal())
38
+ </script>
39
+
40
+ <style scoped lang="scss">
41
+ .tree-view-wrap {
42
+ position: relative;
43
+ border: 1px solid #000;
44
+ padding: 5px;
45
+ max-height: 300px;
46
+ min-height: 200px;
47
+ overflow: auto;
48
+ margin-bottom: 10px;
49
+ }
50
+ </style>
@@ -1,88 +1,88 @@
1
- <template>
2
- <div class="skeleton-wrap">
3
- <div class="tabs">
4
- <ui-skeleton-item width="64px" height="16px" />
5
- <ui-skeleton-item width="64px" height="16px" />
6
- </div>
7
- <div class="actions">
8
- <ui-skeleton-item width="80px" height="16px" />
9
- <ui-skeleton-item width="152px" height="32px" border-radius="6px" />
10
- </div>
11
- <div class="stack-block-wrap">
12
- <div class="stack-block">
13
- <div class="stack-label flex-1">
14
- <ui-skeleton-item width="16px" height="16px" border-radius="50%" />
15
- <ui-skeleton-item height="16px" />
16
- </div>
17
- <div class="stack-value flex-1">
18
- <ui-skeleton-item width="102px" height="32px" border-radius="8px" />
19
- </div>
20
- </div>
21
-
22
- <div v-for="item in 2" :key="item" class="stack-block">
23
- <div class="stack-label flex-1">
24
- <ui-skeleton-item width="16px" height="16px" border-radius="50%" />
25
- <ui-skeleton-item height="16px" />
26
- </div>
27
- <div class="stack-value flex-1">
28
- <ui-skeleton-item width="102px" height="32px" border-radius="8px" />
29
- <ui-skeleton-item width="80px" height="32px" border-radius="8px" />
30
- </div>
31
- </div>
32
-
33
- <div v-for="item in 5" :key="item" class="stack-block">
34
- <div class="stack-label flex-1">
35
- <ui-skeleton-item width="16px" height="16px" border-radius="50%" />
36
- <ui-skeleton-item height="16px" />
37
- </div>
38
- <div class="stack-value flex-1">
39
- <ui-skeleton-item width="196px" height="32px" border-radius="8px" />
40
- </div>
41
- </div>
42
- </div>
43
- </div>
44
- </template>
45
-
46
- <script setup lang="ts"></script>
47
-
48
- <style scoped lang="scss">
49
- .skeleton-wrap {
50
- padding: 0 32px;
51
-
52
- .tabs {
53
- display: flex;
54
- align-items: center;
55
- gap: 32px;
56
- padding: 8px 0 12px;
57
- border-bottom: 1px solid var(--divider-color);
58
- }
59
-
60
- .actions {
61
- display: flex;
62
- align-items: center;
63
- justify-content: space-between;
64
- margin: 12px 0;
65
- }
66
-
67
- .stack-block-wrap {
68
- display: grid;
69
- grid-gap: 12px;
70
-
71
- .stack-block {
72
- display: flex;
73
- align-items: center;
74
- gap: 12px;
75
- padding: 8px 12px;
76
- background: var(--stack-block-bg-color);
77
- border-radius: 6px;
78
-
79
- .stack-label,
80
- .stack-value {
81
- display: flex;
82
- align-items: center;
83
- gap: 8px;
84
- }
85
- }
86
- }
87
- }
88
- </style>
1
+ <template>
2
+ <div class="skeleton-wrap">
3
+ <div class="tabs">
4
+ <ui-skeleton-item width="64px" height="16px" />
5
+ <ui-skeleton-item width="64px" height="16px" />
6
+ </div>
7
+ <div class="actions">
8
+ <ui-skeleton-item width="80px" height="16px" />
9
+ <ui-skeleton-item width="152px" height="32px" border-radius="6px" />
10
+ </div>
11
+ <div class="stack-block-wrap">
12
+ <div class="stack-block">
13
+ <div class="stack-label flex-1">
14
+ <ui-skeleton-item width="16px" height="16px" border-radius="50%" />
15
+ <ui-skeleton-item height="16px" />
16
+ </div>
17
+ <div class="stack-value flex-1">
18
+ <ui-skeleton-item width="102px" height="32px" border-radius="8px" />
19
+ </div>
20
+ </div>
21
+
22
+ <div v-for="item in 2" :key="item" class="stack-block">
23
+ <div class="stack-label flex-1">
24
+ <ui-skeleton-item width="16px" height="16px" border-radius="50%" />
25
+ <ui-skeleton-item height="16px" />
26
+ </div>
27
+ <div class="stack-value flex-1">
28
+ <ui-skeleton-item width="102px" height="32px" border-radius="8px" />
29
+ <ui-skeleton-item width="80px" height="32px" border-radius="8px" />
30
+ </div>
31
+ </div>
32
+
33
+ <div v-for="item in 5" :key="item" class="stack-block">
34
+ <div class="stack-label flex-1">
35
+ <ui-skeleton-item width="16px" height="16px" border-radius="50%" />
36
+ <ui-skeleton-item height="16px" />
37
+ </div>
38
+ <div class="stack-value flex-1">
39
+ <ui-skeleton-item width="196px" height="32px" border-radius="8px" />
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </template>
45
+
46
+ <script setup lang="ts"></script>
47
+
48
+ <style scoped lang="scss">
49
+ .skeleton-wrap {
50
+ padding: 0 32px;
51
+
52
+ .tabs {
53
+ display: flex;
54
+ align-items: center;
55
+ gap: 32px;
56
+ padding: 8px 0 12px;
57
+ border-bottom: 1px solid var(--divider-color);
58
+ }
59
+
60
+ .actions {
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: space-between;
64
+ margin: 12px 0;
65
+ }
66
+
67
+ .stack-block-wrap {
68
+ display: grid;
69
+ grid-gap: 12px;
70
+
71
+ .stack-block {
72
+ display: flex;
73
+ align-items: center;
74
+ gap: 12px;
75
+ padding: 8px 12px;
76
+ background: var(--stack-block-bg-color);
77
+ border-radius: 6px;
78
+
79
+ .stack-label,
80
+ .stack-value {
81
+ display: flex;
82
+ align-items: center;
83
+ gap: 8px;
84
+ }
85
+ }
86
+ }
87
+ }
88
+ </style>
@@ -100,14 +100,15 @@ const descriptionText = computed<string>(() => {
100
100
  return description
101
101
  })
102
102
 
103
- const descriptionDeleteContent = computed<string>(() =>
104
- props.snapshotsCount === 1
105
- ? localization.value.snapshots.deleteLastSnapshotsDescription
106
- : localization.value.snapshots.deleteSnapshotConfirmationDescription.replace(
107
- '{0}',
108
- props.snapshot?.name || ''
109
- )
110
- )
103
+ // TODO Удалить если не надо
104
+ // const descriptionDeleteContent = computed<string>(() =>
105
+ // props.snapshotsCount === 1
106
+ // ? localization.value.snapshots.deleteLastSnapshotsDescription
107
+ // : localization.value.snapshots.deleteSnapshotConfirmationDescription.replace(
108
+ // '{0}',
109
+ // props.snapshot?.name || ''
110
+ // )
111
+ // )
111
112
  </script>
112
113
 
113
114
  <style scoped lang="scss">
@@ -158,7 +158,7 @@ const onSubmit = (): void => {
158
158
  alertMessages.value = [
159
159
  localization.value.common.nameAlreadyExists.replace('{0}', name),
160
160
  ]
161
- nameError.value = ' '
161
+ nameError.value = ' ' // Чтобы поле отображало рамку ошибки
162
162
  return
163
163
  }
164
164
  emits('submit')
@@ -1,35 +1,35 @@
1
- <template>
2
- <common-wizards-common-compatibility-new
3
- v-if="isNewView"
4
- :status="props.status"
5
- :text="props.text"
6
- :loading="props.loading"
7
- />
8
- <common-wizards-common-compatibility-old
9
- v-else
10
- :status="props.status"
11
- :text="props.text"
12
- />
13
- </template>
14
-
15
- <script lang="ts" setup>
16
- import type {
17
- UI_T_CompatibilityStatus
18
- } from "~/components/common/wizards/common/compatibility/lib/models/types";
19
-
20
- const props = withDefaults(
21
- defineProps<{
22
- text: string
23
- status: UI_T_CompatibilityStatus
24
- loading?: boolean
25
- }>(),
26
- {
27
- loading: false,
28
- }
29
- )
30
-
31
- const { $store }: any = useNuxtApp()
32
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
33
- </script>
34
-
35
- <style lang="scss" scoped></style>
1
+ <template>
2
+ <common-wizards-common-compatibility-new
3
+ v-if="isNewView"
4
+ :status="props.status"
5
+ :text="props.text"
6
+ :loading="props.loading"
7
+ />
8
+ <common-wizards-common-compatibility-old
9
+ v-else
10
+ :status="props.status"
11
+ :text="props.text"
12
+ />
13
+ </template>
14
+
15
+ <script lang="ts" setup>
16
+ import type {
17
+ UI_T_CompatibilityStatus
18
+ } from "~/components/common/wizards/common/compatibility/lib/models/types";
19
+
20
+ const props = withDefaults(
21
+ defineProps<{
22
+ text: string
23
+ status: UI_T_CompatibilityStatus
24
+ loading?: boolean
25
+ }>(),
26
+ {
27
+ loading: false,
28
+ }
29
+ )
30
+
31
+ const { $store }: any = useNuxtApp()
32
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
33
+ </script>
34
+
35
+ <style lang="scss" scoped></style>
@@ -1,93 +1,93 @@
1
- <template>
2
- <div class="compute-resource">
3
- <div class="compute-resource__container-tree">
4
- <ui-tree
5
- :nodes="props.nodes"
6
- :expand-all="false"
7
- :is-loading="props.isLoading"
8
- class="compute-resource__tree"
9
- @toggle-node="onShowNodes"
10
- @select-node="onSelectNode"
11
- >
12
- <template #content="{ node }">
13
- <div class="flex-align-center">
14
- <span :class="['node-icon', node.iconClassName]"></span>
15
- <span class="node-name text-ellipsis">{{ node.name }}</span>
16
- </div>
17
- </template>
18
- </ui-tree>
19
- </div>
20
-
21
- <common-wizards-common-compatibility
22
- :loading="props.isLoading"
23
- :status="props.compatibility[0]"
24
- :text="props.compatibility[1]"
25
- />
26
- </div>
27
- </template>
28
-
29
- <script setup lang="ts">
30
- import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
31
- import type { UI_T_CompatibilityStatus } from '~/components/common/wizards/common/compatibility/lib/models/types'
32
-
33
- const props = withDefaults(
34
- defineProps<{
35
- nodes: UI_I_TreeNode[]
36
- compatibility: [UI_T_CompatibilityStatus, string]
37
- isLoading?: boolean
38
- }>(),
39
- {
40
- isLoading: false,
41
- }
42
- )
43
- const emits = defineEmits<{
44
- (event: 'select-node', value: UI_I_TreeNode): void
45
- (event: 'show-nodes', value: UI_I_TreeNode): void
46
- }>()
47
-
48
- const onShowNodes = (node: UI_I_TreeNode): void => emits('show-nodes', node)
49
- const onSelectNode = (node: UI_I_TreeNode): void => emits('select-node', node)
50
- </script>
51
-
52
- <style scoped lang="scss">
53
- @import 'assets/scss/common/mixins.scss';
54
- .compute-resource {
55
- &__container-tree {
56
- height: 240px;
57
- background: var(--input-bg);
58
- border: 1px solid var(--line-color);
59
- border-radius: 8px;
60
- overflow: hidden;
61
-
62
- :deep(.compute-resource__tree) {
63
- .node-icon {
64
- margin-right: 8px;
65
- }
66
- .node-name {
67
- font-size: 12px;
68
- }
69
- .tree-content {
70
- padding: 8px 8px 0;
71
-
72
- &::-webkit-scrollbar-thumb {
73
- background: var(--move-to-tree-scrollbar-thumb-bg);
74
- border-radius: 8px;
75
- border: solid 3px var(--scrollbar-thumb-transparent-border);
76
- }
77
- &::-webkit-scrollbar-track {
78
- background: transparent;
79
- }
80
- &::-webkit-scrollbar-corner {
81
- background: transparent;
82
- }
83
-
84
- .node-wrapper {
85
- border-top-right-radius: 4px;
86
- border-bottom-right-radius: 4px;
87
- min-height: 26px;
88
- }
89
- }
90
- }
91
- }
92
- }
93
- </style>
1
+ <template>
2
+ <div class="compute-resource">
3
+ <div class="compute-resource__container-tree">
4
+ <ui-tree
5
+ :nodes="props.nodes"
6
+ :expand-all="false"
7
+ :is-loading="props.isLoading"
8
+ class="compute-resource__tree"
9
+ @toggle-node="onShowNodes"
10
+ @select-node="onSelectNode"
11
+ >
12
+ <template #content="{ node }">
13
+ <div class="flex-align-center">
14
+ <span :class="['node-icon', node.iconClassName]"></span>
15
+ <span class="node-name text-ellipsis">{{ node.name }}</span>
16
+ </div>
17
+ </template>
18
+ </ui-tree>
19
+ </div>
20
+
21
+ <common-wizards-common-compatibility
22
+ :loading="props.isLoading"
23
+ :status="props.compatibility[0]"
24
+ :text="props.compatibility[1]"
25
+ />
26
+ </div>
27
+ </template>
28
+
29
+ <script setup lang="ts">
30
+ import type { UI_I_TreeNode } from '~/components/common/recursionTree/lib/models/interfaces'
31
+ import type { UI_T_CompatibilityStatus } from '~/components/common/wizards/common/compatibility/lib/models/types'
32
+
33
+ const props = withDefaults(
34
+ defineProps<{
35
+ nodes: UI_I_TreeNode[]
36
+ compatibility: [UI_T_CompatibilityStatus, string]
37
+ isLoading?: boolean
38
+ }>(),
39
+ {
40
+ isLoading: false,
41
+ }
42
+ )
43
+ const emits = defineEmits<{
44
+ (event: 'select-node', value: UI_I_TreeNode): void
45
+ (event: 'show-nodes', value: UI_I_TreeNode): void
46
+ }>()
47
+
48
+ const onShowNodes = (node: UI_I_TreeNode): void => emits('show-nodes', node)
49
+ const onSelectNode = (node: UI_I_TreeNode): void => emits('select-node', node)
50
+ </script>
51
+
52
+ <style scoped lang="scss">
53
+ @import 'assets/scss/common/mixins.scss';
54
+ .compute-resource {
55
+ &__container-tree {
56
+ height: 240px;
57
+ background: var(--input-bg);
58
+ border: 1px solid var(--line-color);
59
+ border-radius: 8px;
60
+ overflow: hidden;
61
+
62
+ :deep(.compute-resource__tree) {
63
+ .node-icon {
64
+ margin-right: 8px;
65
+ }
66
+ .node-name {
67
+ font-size: 12px;
68
+ }
69
+ .tree-content {
70
+ padding: 8px 8px 0;
71
+
72
+ &::-webkit-scrollbar-thumb {
73
+ background: var(--move-to-tree-scrollbar-thumb-bg);
74
+ border-radius: 8px;
75
+ border: solid 3px var(--scrollbar-thumb-transparent-border);
76
+ }
77
+ &::-webkit-scrollbar-track {
78
+ background: transparent;
79
+ }
80
+ &::-webkit-scrollbar-corner {
81
+ background: transparent;
82
+ }
83
+
84
+ .node-wrapper {
85
+ border-top-right-radius: 4px;
86
+ border-bottom-right-radius: 4px;
87
+ min-height: 26px;
88
+ }
89
+ }
90
+ }
91
+ }
92
+ }
93
+ </style>