bfg-common 1.4.165 → 1.4.166

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 (42) hide show
  1. package/assets/img/icons/icons-sprite-dark-1.svg +407 -407
  2. package/assets/img/icons/icons-sprite-dark-2.svg +343 -343
  3. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  4. package/assets/img/icons/icons-sprite-dark-4.svg +255 -255
  5. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  6. package/assets/img/icons/icons-sprite-dark-6.svg +83 -83
  7. package/assets/img/icons/icons-sprite-light-1.svg +407 -407
  8. package/assets/img/icons/icons-sprite-light-2.svg +343 -343
  9. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  10. package/assets/img/icons/icons-sprite-light-4.svg +255 -255
  11. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  12. package/assets/img/icons/icons-sprite-light-6.svg +83 -83
  13. package/assets/localization/local_be.json +1 -0
  14. package/assets/localization/local_en.json +1 -0
  15. package/assets/localization/local_hy.json +1 -0
  16. package/assets/localization/local_kk.json +1 -0
  17. package/assets/localization/local_ru.json +1 -0
  18. package/assets/localization/local_zh.json +1 -0
  19. package/assets/scss/common/global.scss +0 -4
  20. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  21. package/components/atoms/stack/StackBlock.vue +185 -185
  22. package/components/common/browse/blocks/Title.vue +91 -91
  23. package/components/common/browse/blocks/info/Date.vue +21 -21
  24. package/components/common/context/lib/models/interfaces.ts +30 -30
  25. package/components/common/context/recursion/Recursion.vue +86 -86
  26. package/components/common/context/recursion/RecursionNew.vue +199 -199
  27. package/components/common/context/recursion/RecursionOld.vue +213 -213
  28. package/components/common/layout/theHeader/TheHeaderNew.vue +6 -3
  29. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +25 -4
  30. package/components/common/pages/hardwareHealth/historyTestimony/Graph.vue +32 -14
  31. package/components/common/vm/actions/add/Add.vue +609 -609
  32. package/components/common/vm/actions/clone/Clone.vue +522 -522
  33. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/lib/config/options.ts +20 -20
  34. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +403 -403
  35. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Hv.vue +99 -99
  36. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/streamingMode/StreamingMode.vue +85 -85
  37. package/components/common/vm/actions/editSettings/EditSettings.vue +327 -327
  38. package/composables/productNameLocal.ts +30 -30
  39. package/package.json +1 -1
  40. package/plugins/recursion.ts +311 -311
  41. package/public/spice-console/lib/images/bitmap.js +203 -203
  42. package/store/tasks/mappers/recentTasks.ts +45 -45
@@ -1,213 +1,213 @@
1
- <template>
2
- <ul class="context-wrap">
3
- <span v-if="props.isLoading">
4
- <atoms-loader-pre-loader
5
- id="loader"
6
- class="absolute-center context-menu__loading"
7
- :show="true"
8
- />
9
- </span>
10
- <li
11
- v-for="(item, key) in props.items"
12
- :key="key"
13
- :class="[
14
- 'menu-item',
15
- { disabled: item.disabled || isLoading },
16
- { 'item-header': item.isHeader },
17
- { 'has-border-top': item.hasBorderTop },
18
- ]"
19
- @mouseenter="emits('toggle-items', [item, true, $event])"
20
- @mouseleave="emits('toggle-items', [item, false, $event])"
21
- >
22
- <span
23
- class="context-link"
24
- :style="item.style"
25
- :data-id="`${item.testId}-context-link`"
26
- @mousedown="emits('select-item', item)"
27
- >
28
- <span :class="['context-icon', item.iconClassName]" />
29
- <span class="menu-item-text">{{ item.name }}</span>
30
- <span v-if="item.items.length" class="arrow-icon" />
31
- <span v-if="item.shortcut" class="shortcut">{{ item.shortcut }}</span>
32
- </span>
33
-
34
- <div class="context-children">
35
- <common-context-recursion
36
- v-show="item.isShowItems"
37
- :action-loading="props.actionLoading"
38
- :class="[{ 'child-show': item.isShowItems }]"
39
- :items="item.items"
40
- @select-item="emits('select-item', $event)"
41
- />
42
- </div>
43
- </li>
44
- </ul>
45
- </template>
46
-
47
- <script setup lang="ts">
48
- import type { UI_I_ContextMenuItem } from '~/components/common/context/lib/models/interfaces'
49
- import type { I_HTMLLiElement } from '~/components/common/context/recursion/lib/models/interfaces'
50
-
51
- const props = defineProps<{
52
- items: UI_I_ContextMenuItem[]
53
- actionLoading: string | null
54
- isLoading: boolean
55
- testId?: string
56
- }>()
57
-
58
- const emits = defineEmits<{
59
- (event: 'select-item', value: UI_I_ContextMenuItem): void
60
- (
61
- event: 'toggle-items',
62
- value: [UI_I_ContextMenuItem, boolean, I_HTMLLiElement]
63
- ): void
64
- }>()
65
- </script>
66
-
67
- <style scoped lang="scss">
68
- .loader-wrapper {
69
- width: 100%;
70
- height: 100%;
71
- z-index: 100;
72
- }
73
-
74
- .context-menu__loading {
75
- :deep(.spinner) {
76
- width: 45px;
77
- height: 45px;
78
- min-width: 45px;
79
- min-height: 45px;
80
- z-index: 1000;
81
- }
82
- }
83
- .context-wrap {
84
- width: auto;
85
- max-width: 400px;
86
- background: var(--global-bg-color);
87
- border-radius: 0;
88
- color: #333;
89
- border: 1px solid var(--context-menu-border-color);
90
- user-select: none;
91
- list-style: none;
92
- max-height: 100vh;
93
- overflow-y: auto;
94
-
95
- .menu-item {
96
- position: relative;
97
- color: #565656;
98
- border-bottom: 1px solid transparent;
99
- cursor: pointer;
100
- padding: 5px 0 3px;
101
-
102
- &.has-border-top {
103
- border-top: 1px solid var(--context-menu-inset-border-color);
104
- }
105
-
106
- &.item-header {
107
- font-size: 11px;
108
- background-color: var(--context-menu-item-header-color);
109
- cursor: default;
110
- }
111
- &:not(.item-header):not(.disabled):hover {
112
- background-color: var(--context-menu-hover-bg-color);
113
- color: #454545;
114
- border-bottom: 1px solid var(--context-menu-hover-border-color);
115
- }
116
- &.disabled {
117
- opacity: 0.5;
118
- user-select: none;
119
- cursor: default;
120
- }
121
- &.left {
122
- :deep(.context-children) {
123
- left: 0;
124
- background: red;
125
-
126
- .context-wrap {
127
- transform: translateX(-100%);
128
- left: auto;
129
- }
130
- }
131
- }
132
-
133
- .context-link {
134
- position: relative;
135
- overflow: hidden;
136
- text-overflow: ellipsis;
137
- white-space: nowrap;
138
- display: flex;
139
- align-items: center;
140
- user-select: none;
141
- padding: 3px 20px 4px 10px;
142
-
143
- .menu-item-text {
144
- flex: 1 1 0;
145
- }
146
-
147
- .context-icon {
148
- display: inline-block;
149
- margin: -2px 4px 0 0;
150
- vertical-align: middle;
151
- width: 18px;
152
- height: 18px;
153
- }
154
-
155
- .arrow-icon {
156
- position: absolute;
157
- top: 50%;
158
- margin-top: -8px;
159
- right: 4px;
160
- background-image: url('assets/img/icons/sprite.png');
161
- display: inline-block;
162
- width: 16px;
163
- height: 16px;
164
- overflow: hidden;
165
- background-repeat: no-repeat;
166
- font-size: 0;
167
- line-height: 0;
168
- text-align: center;
169
- transform: rotate(90deg);
170
- }
171
-
172
- .shortcut {
173
- padding-left: 10px;
174
- }
175
- }
176
-
177
- .context-children {
178
- position: absolute;
179
- top: 0;
180
- left: 100%;
181
-
182
- .context-wrap {
183
- position: fixed;
184
- }
185
- }
186
- }
187
- }
188
- .context-menu__loading {
189
- :deep(.spinner) {
190
- width: 45px;
191
- height: 45px;
192
- min-width: 45px;
193
- min-height: 45px;
194
- z-index: 1000;
195
- }
196
- }
197
- </style>
198
- <style>
199
- :root {
200
- --context-menu-hover-bg-color: #e8e8e8;
201
- --context-menu-border-color: #949494;
202
- --context-menu-inset-border-color: #d4d5d6;
203
- --context-menu-item-header-color: #eceff2;
204
- --context-menu-hover-border-color: #666;
205
- }
206
- :root.dark-theme {
207
- --context-menu-hover-bg-color: #324f61;
208
- --context-menu-border-color: #495865;
209
- --context-menu-inset-border-color: #485764;
210
- --context-menu-item-header-color: #29414e;
211
- --context-menu-hover-border-color: #fff;
212
- }
213
- </style>
1
+ <template>
2
+ <ul class="context-wrap">
3
+ <span v-if="props.isLoading">
4
+ <atoms-loader-pre-loader
5
+ id="loader"
6
+ class="absolute-center context-menu__loading"
7
+ :show="true"
8
+ />
9
+ </span>
10
+ <li
11
+ v-for="(item, key) in props.items"
12
+ :key="key"
13
+ :class="[
14
+ 'menu-item',
15
+ { disabled: item.disabled || isLoading },
16
+ { 'item-header': item.isHeader },
17
+ { 'has-border-top': item.hasBorderTop },
18
+ ]"
19
+ @mouseenter="emits('toggle-items', [item, true, $event])"
20
+ @mouseleave="emits('toggle-items', [item, false, $event])"
21
+ >
22
+ <span
23
+ class="context-link"
24
+ :style="item.style"
25
+ :data-id="`${item.testId}-context-link`"
26
+ @mousedown="emits('select-item', item)"
27
+ >
28
+ <span :class="['context-icon', item.iconClassName]" />
29
+ <span class="menu-item-text">{{ item.name }}</span>
30
+ <span v-if="item.items.length" class="arrow-icon" />
31
+ <span v-if="item.shortcut" class="shortcut">{{ item.shortcut }}</span>
32
+ </span>
33
+
34
+ <div class="context-children">
35
+ <common-context-recursion
36
+ v-show="item.isShowItems"
37
+ :action-loading="props.actionLoading"
38
+ :class="[{ 'child-show': item.isShowItems }]"
39
+ :items="item.items"
40
+ @select-item="emits('select-item', $event)"
41
+ />
42
+ </div>
43
+ </li>
44
+ </ul>
45
+ </template>
46
+
47
+ <script setup lang="ts">
48
+ import type { UI_I_ContextMenuItem } from '~/components/common/context/lib/models/interfaces'
49
+ import type { I_HTMLLiElement } from '~/components/common/context/recursion/lib/models/interfaces'
50
+
51
+ const props = defineProps<{
52
+ items: UI_I_ContextMenuItem[]
53
+ actionLoading: string | null
54
+ isLoading: boolean
55
+ testId?: string
56
+ }>()
57
+
58
+ const emits = defineEmits<{
59
+ (event: 'select-item', value: UI_I_ContextMenuItem): void
60
+ (
61
+ event: 'toggle-items',
62
+ value: [UI_I_ContextMenuItem, boolean, I_HTMLLiElement]
63
+ ): void
64
+ }>()
65
+ </script>
66
+
67
+ <style scoped lang="scss">
68
+ .loader-wrapper {
69
+ width: 100%;
70
+ height: 100%;
71
+ z-index: 100;
72
+ }
73
+
74
+ .context-menu__loading {
75
+ :deep(.spinner) {
76
+ width: 45px;
77
+ height: 45px;
78
+ min-width: 45px;
79
+ min-height: 45px;
80
+ z-index: 1000;
81
+ }
82
+ }
83
+ .context-wrap {
84
+ width: auto;
85
+ max-width: 400px;
86
+ background: var(--global-bg-color);
87
+ border-radius: 0;
88
+ color: #333;
89
+ border: 1px solid var(--context-menu-border-color);
90
+ user-select: none;
91
+ list-style: none;
92
+ max-height: 100vh;
93
+ overflow-y: auto;
94
+
95
+ .menu-item {
96
+ position: relative;
97
+ color: #565656;
98
+ border-bottom: 1px solid transparent;
99
+ cursor: pointer;
100
+ padding: 5px 0 3px;
101
+
102
+ &.has-border-top {
103
+ border-top: 1px solid var(--context-menu-inset-border-color);
104
+ }
105
+
106
+ &.item-header {
107
+ font-size: 11px;
108
+ background-color: var(--context-menu-item-header-color);
109
+ cursor: default;
110
+ }
111
+ &:not(.item-header):not(.disabled):hover {
112
+ background-color: var(--context-menu-hover-bg-color);
113
+ color: #454545;
114
+ border-bottom: 1px solid var(--context-menu-hover-border-color);
115
+ }
116
+ &.disabled {
117
+ opacity: 0.5;
118
+ user-select: none;
119
+ cursor: default;
120
+ }
121
+ &.left {
122
+ :deep(.context-children) {
123
+ left: 0;
124
+ background: red;
125
+
126
+ .context-wrap {
127
+ transform: translateX(-100%);
128
+ left: auto;
129
+ }
130
+ }
131
+ }
132
+
133
+ .context-link {
134
+ position: relative;
135
+ overflow: hidden;
136
+ text-overflow: ellipsis;
137
+ white-space: nowrap;
138
+ display: flex;
139
+ align-items: center;
140
+ user-select: none;
141
+ padding: 3px 20px 4px 10px;
142
+
143
+ .menu-item-text {
144
+ flex: 1 1 0;
145
+ }
146
+
147
+ .context-icon {
148
+ display: inline-block;
149
+ margin: -2px 4px 0 0;
150
+ vertical-align: middle;
151
+ width: 18px;
152
+ height: 18px;
153
+ }
154
+
155
+ .arrow-icon {
156
+ position: absolute;
157
+ top: 50%;
158
+ margin-top: -8px;
159
+ right: 4px;
160
+ background-image: url('assets/img/icons/sprite.png');
161
+ display: inline-block;
162
+ width: 16px;
163
+ height: 16px;
164
+ overflow: hidden;
165
+ background-repeat: no-repeat;
166
+ font-size: 0;
167
+ line-height: 0;
168
+ text-align: center;
169
+ transform: rotate(90deg);
170
+ }
171
+
172
+ .shortcut {
173
+ padding-left: 10px;
174
+ }
175
+ }
176
+
177
+ .context-children {
178
+ position: absolute;
179
+ top: 0;
180
+ left: 100%;
181
+
182
+ .context-wrap {
183
+ position: fixed;
184
+ }
185
+ }
186
+ }
187
+ }
188
+ .context-menu__loading {
189
+ :deep(.spinner) {
190
+ width: 45px;
191
+ height: 45px;
192
+ min-width: 45px;
193
+ min-height: 45px;
194
+ z-index: 1000;
195
+ }
196
+ }
197
+ </style>
198
+ <style>
199
+ :root {
200
+ --context-menu-hover-bg-color: #e8e8e8;
201
+ --context-menu-border-color: #949494;
202
+ --context-menu-inset-border-color: #d4d5d6;
203
+ --context-menu-item-header-color: #eceff2;
204
+ --context-menu-hover-border-color: #666;
205
+ }
206
+ :root.dark-theme {
207
+ --context-menu-hover-bg-color: #324f61;
208
+ --context-menu-border-color: #495865;
209
+ --context-menu-inset-border-color: #485764;
210
+ --context-menu-item-header-color: #29414e;
211
+ --context-menu-hover-border-color: #fff;
212
+ }
213
+ </style>
@@ -30,9 +30,12 @@
30
30
  </div>
31
31
  </template>
32
32
  <template #content>
33
- <span class="header-tooltip-text">{{
34
- localization.common.openMenu
35
- }}</span>
33
+ <span class="header-tooltip-text">
34
+ <template v-if="!props.isShowMainMenu">{{
35
+ localization.common.openMenu
36
+ }}</template>
37
+ <template v-else>{{ localization.common.closeMenu }}</template>
38
+ </span>
36
39
  </template>
37
40
  </ui-tooltip>
38
41
  <nuxt-link
@@ -60,7 +60,9 @@
60
60
  :id="`tooltip-nav-${key}-${key2}`"
61
61
  :key="item2.id"
62
62
  :test-id="`tooltip-nav-${key}-${key2}`"
63
+ :menu-selected="isActiveNode(item2.to)"
63
64
  size="md"
65
+ class="node-tooltip-container"
64
66
  menu
65
67
  >
66
68
  <template #target>
@@ -86,7 +88,7 @@
86
88
  </div>
87
89
  </template>
88
90
  <template #content>
89
- {{ item2.title }}
91
+ <span class="node-tooltip-text">{{ item2.title }}</span>
90
92
  </template>
91
93
  </ui-tooltip>
92
94
  <div
@@ -119,6 +121,10 @@ const emits = defineEmits<{
119
121
  (event: 'hide-main-menu'): void
120
122
  }>()
121
123
 
124
+ const router = useRoute()
125
+
126
+ const isActiveNode = (path: string): boolean => router.fullPath.includes(path)
127
+
122
128
  const mainMenuHovered = defineModel<boolean>('mainMenuHovered', {
123
129
  required: true,
124
130
  })
@@ -230,8 +236,16 @@ const localization = computed<UI_I_Localization>(() => useLocal())
230
236
  padding: 0 12px 12px;
231
237
  height: inherit;
232
238
 
239
+ &::-webkit-scrollbar-track,
240
+ &::-webkit-scrollbar-corner {
241
+ background: var(--nav-content-scrollbar-track-corner-thumb);
242
+ }
233
243
  &::-webkit-scrollbar-thumb {
234
- background: var(--nav-content-scrollbar-thumb-bg);
244
+ border: solid 3px var(--nav-content-scrollbar-track-corner-thumb);
245
+ }
246
+
247
+ .node-tooltip-container {
248
+ margin-bottom: 4px;
235
249
  }
236
250
 
237
251
  .content-toggle-tooltip {
@@ -259,6 +273,7 @@ const localization = computed<UI_I_Localization>(() => useLocal())
259
273
 
260
274
  &:not(.active):hover {
261
275
  background-color: var(--vertical-nav-hover-bg-color);
276
+ color: var(--vertical-nav-hover-item-color);
262
277
  }
263
278
 
264
279
  .nav-text {
@@ -271,6 +286,10 @@ const localization = computed<UI_I_Localization>(() => useLocal())
271
286
  margin-top: 4px;
272
287
  }
273
288
  }
289
+ .node-tooltip-text {
290
+ font-size: 14px;
291
+ font-weight: 500;
292
+ }
274
293
 
275
294
  .nav-divider {
276
295
  width: 100%;
@@ -287,21 +306,23 @@ const localization = computed<UI_I_Localization>(() => useLocal())
287
306
  :root.is-new-view {
288
307
  --vertical-nav-bg-color: rgba(233, 235, 237, 0.92);
289
308
  --vertical-nav-item-color: #4d5d69;
309
+ --vertical-nav-hover-item-color: #182531;
290
310
  --vertical-nav-hover-bg-color: rgba(211, 214, 218, 0.48);
291
311
  --vertical-active-nav-bg-color: #213444;
292
312
  --vertical-active-nav-color: #ffffff;
293
313
  --pin-unpin-label-hover-color: #008fd6;
294
- --nav-content-scrollbar-thumb-bg: #9da6ad;
314
+ --nav-content-scrollbar-track-corner-thumb: #ebedee;
295
315
  --nav-content-divider-bg: #d3d6da;
296
316
  }
297
317
  :root.is-new-view.dark-theme {
298
318
  --vertical-nav-bg-color: rgba(51, 68, 83, 0.92);
299
319
  --vertical-nav-item-color: #e9eaec;
320
+ --vertical-nav-hover-item-color: #ffffff;
300
321
  --vertical-nav-hover-bg-color: rgba(233, 234, 236, 0.12);
301
322
  --vertical-active-nav-bg-color: rgba(233, 235, 237, 0.96);
302
323
  --vertical-active-nav-color: #213444;
303
324
  --pin-unpin-label-hover-color: #2ba2de;
304
- --nav-content-scrollbar-thumb-bg: rgba(157, 166, 173, 0.32);
325
+ --nav-content-scrollbar-track-corner-thumb: #435360;
305
326
  --nav-content-divider-bg: rgba(211, 214, 218, 0.12);
306
327
  }
307
328
  </style>
@@ -31,9 +31,12 @@
31
31
  />
32
32
  <div
33
33
  ref="historyTestimonyGraph"
34
- :class="`history-testimony-graph ${selectedView}`"
34
+ :class="[
35
+ `history-testimony-graph ${selectedView}`,
36
+ { medium: isMediumSizeGraphsContainer },
37
+ ]"
35
38
  >
36
- <div>
39
+ <div class="graph-container">
37
40
  <common-graph
38
41
  v-if="powerDataLocal && !props.powerLoading"
39
42
  :data="powerDataLocal"
@@ -49,7 +52,7 @@
49
52
  </div>
50
53
  <div v-else class="history-testimony-graph__empty-content"></div>
51
54
  </div>
52
- <div>
55
+ <div class="graph-container">
53
56
  <common-graph
54
57
  v-if="temperatureDataLocal && !props.temperatureLoading"
55
58
  :data="temperatureDataLocal"
@@ -69,6 +72,7 @@
69
72
  </template>
70
73
 
71
74
  <script setup lang="ts">
75
+ import { useElementSize } from '@vueuse/core'
72
76
  import { format } from 'date-fns'
73
77
  import type {
74
78
  I_SeriesLine,
@@ -98,6 +102,10 @@ const selectedView = defineModel<string>('selectedView')
98
102
 
99
103
  const { $store }: any = useNuxtApp()
100
104
 
105
+ const historyTestimonyGraph = ref<any>(null)
106
+ const { width } = useElementSize(historyTestimonyGraph)
107
+ const isMediumSizeGraphsContainer = computed<boolean>(() => width.value < 1021)
108
+
101
109
  // const historyTestimonyGraph = ref(null)
102
110
  // const contentWidth = ref<number>(
103
111
  // useElementSize(historyTestimonyGraph)?.width || 0
@@ -398,26 +406,36 @@ const onDeleteOption = (): void => {}
398
406
 
399
407
  <style scoped lang="scss">
400
408
  .history-testimony-graph {
401
- display: grid;
409
+ display: flex;
402
410
  align-items: center;
403
411
  grid-gap: 20px;
404
- grid-template-columns: 1fr 1fr;
405
412
 
406
- //&.medium {
407
- // grid-template-columns: 1fr;
408
- //}
409
- &.power {
410
- grid-template-columns: 1fr 0;
413
+ &.medium {
414
+ flex-direction: column;
411
415
 
416
+ .graph-container {
417
+ width: 100%;
418
+ }
419
+ }
420
+ .graph-container {
421
+ width: calc(50% - 10px);
422
+ }
423
+ &.power {
424
+ & > div:nth-child(1) {
425
+ width: 100%;
426
+ }
412
427
  & > div:nth-child(2) {
413
- visibility: hidden;
428
+ display: none;
429
+ width: 0;
414
430
  }
415
431
  }
416
432
  &.temperature {
417
- grid-template-columns: 0 1fr;
418
-
419
433
  & > div:nth-child(1) {
420
- visibility: hidden;
434
+ display: none;
435
+ width: 0;
436
+ }
437
+ & > div:nth-child(2) {
438
+ width: 100%;
421
439
  }
422
440
  }
423
441