bfg-common 1.5.181 → 1.5.183

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 (24) 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 +2 -1
  6. package/assets/localization/local_en.json +2 -1
  7. package/assets/localization/local_hy.json +2 -1
  8. package/assets/localization/local_kk.json +2 -1
  9. package/assets/localization/local_ru.json +2 -1
  10. package/assets/localization/local_zh.json +1 -0
  11. package/components/common/browse/Browse.vue +7 -1
  12. package/components/common/browse/BrowseNew.vue +55 -26
  13. package/components/common/browse/blocks/Container.vue +5 -4
  14. package/components/common/browse/blocks/TitleNew.vue +4 -3
  15. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/utils.ts +1040 -1040
  16. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +95 -14
  17. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +6 -6
  18. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/location/StorageModalNew.vue +51 -3
  19. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +14 -1
  20. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/Table.vue +1 -0
  21. package/components/common/vm/actions/common/select/storage/Storage.vue +8 -0
  22. package/components/common/vm/actions/common/select/storage/new/New.vue +10 -1
  23. package/components/common/vm/actions/common/select/storage/new/lib/config/table.ts +14 -6
  24. package/package.json +2 -2
@@ -211,12 +211,81 @@ const themeMode = useLocalStorage('themeMode')
211
211
  margin-top: 12px;
212
212
  }
213
213
  }
214
-
214
+ //
215
+ //.light-theme {
216
+ // :deep(.stack-block-label .ui-main-select-toggle) {
217
+ // background-color: #ffffff;
218
+ // }
219
+ // :deep(.stack-block-expanded > .stack-block-label .ui-main-select-toggle) {
220
+ // background-color: #1b2a371f;
221
+ // border-color: #e9ebed3d;
222
+ //
223
+ // .ui-arrow-icon {
224
+ // color: #e9eaec;
225
+ // }
226
+ // }
227
+ // :deep(.stack-block-expanded > .stack-block-label .combobox-input) {
228
+ // color: #e9eaec;
229
+ // }
230
+ // :deep(.stack-block-expanded > .stack-block-label .ui-selected-text) {
231
+ // color: #e9eaec;
232
+ // }
233
+ //
234
+ // :deep(.stack-block-label .ui-main-input) {
235
+ // background-color: #ffffff;
236
+ // }
237
+ // :deep(.stack-block-expanded > .stack-block-label .ui-main-input) {
238
+ // background-color: #1b2a371f;
239
+ // border-color: #e9ebed3d;
240
+ // color: #e9eaec;
241
+ // }
242
+ //}
243
+ //
244
+ //.dark-theme {
245
+ // :deep(.stack-block-label .ui-main-select-toggle) {
246
+ // background-color: #1b2a371f;
247
+ // }
248
+ // :deep(.stack-block-expanded > .stack-block-label .ui-main-select-toggle) {
249
+ // background-color: #ffffff;
250
+ // border-color: #d3d6da;
251
+ //
252
+ // .ui-arrow-icon {
253
+ // color: #182531;
254
+ // }
255
+ // }
256
+ // :deep(.stack-block-expanded > .stack-block-label .combobox-input) {
257
+ // color: #182531;
258
+ // }
259
+ // :deep(.stack-block-expanded > .stack-block-label .ui-selected-text) {
260
+ // color: #182531;
261
+ // }
262
+ //
263
+ // :deep(.stack-block-label .ui-main-input) {
264
+ // background-color: #1b2a371f;
265
+ // }
266
+ // :deep(.stack-block-expanded > .stack-block-label .ui-main-input) {
267
+ // background-color: #ffffff;
268
+ // border-color: #d3d6da;
269
+ // color: #182531;
270
+ // }
271
+ // :deep(.ui-select-toggle-button:disabled) {
272
+ // background-color: linear-gradient(
273
+ // 0deg,
274
+ // rgba(189, 195, 199, 0.08) 0%,
275
+ // rgba(189, 195, 199, 0.08) 100%
276
+ // ),
277
+ // rgba(27, 42, 55, 0.12);
278
+ // border-color: #D3D6DA14;
279
+ // color: #BDC3C770;
280
+ // }
281
+ //}
282
+ </style>
283
+ <style lang="scss">
215
284
  .light-theme {
216
- :deep(.stack-block-label .ui-main-select-toggle) {
285
+ .stack-block-label .ui-main-select-toggle {
217
286
  background-color: #ffffff;
218
287
  }
219
- :deep(.stack-block-expanded > .stack-block-label .ui-main-select-toggle) {
288
+ .stack-block-expanded > .stack-block-label .ui-main-select-toggle {
220
289
  background-color: #1b2a371f;
221
290
  border-color: #e9ebed3d;
222
291
 
@@ -224,17 +293,17 @@ const themeMode = useLocalStorage('themeMode')
224
293
  color: #e9eaec;
225
294
  }
226
295
  }
227
- :deep(.stack-block-expanded > .stack-block-label .combobox-input) {
296
+ .stack-block-expanded > .stack-block-label .combobox-input {
228
297
  color: #e9eaec;
229
298
  }
230
- :deep(.stack-block-expanded > .stack-block-label .ui-selected-text) {
299
+ .stack-block-expanded > .stack-block-label .ui-selected-text {
231
300
  color: #e9eaec;
232
301
  }
233
302
 
234
- :deep(.stack-block-label .ui-main-input) {
303
+ .stack-block-label .ui-main-input {
235
304
  background-color: #ffffff;
236
305
  }
237
- :deep(.stack-block-expanded > .stack-block-label .ui-main-input) {
306
+ .stack-block-expanded > .stack-block-label .ui-main-input {
238
307
  background-color: #1b2a371f;
239
308
  border-color: #e9ebed3d;
240
309
  color: #e9eaec;
@@ -242,10 +311,17 @@ const themeMode = useLocalStorage('themeMode')
242
311
  }
243
312
 
244
313
  .dark-theme {
245
- :deep(.stack-block-label .ui-main-select-toggle) {
246
- background-color: #1b2a371f;
314
+ .stack-block-label {
315
+ .ui-main-select-toggle {
316
+ background-color: #1b2a371f;
317
+ }
318
+ .error {
319
+ .ui-main-select-toggle {
320
+ background-color: #d1312614;
321
+ }
322
+ }
247
323
  }
248
- :deep(.stack-block-expanded > .stack-block-label .ui-main-select-toggle) {
324
+ .stack-block-expanded > .stack-block-label .ui-main-select-toggle {
249
325
  background-color: #ffffff;
250
326
  border-color: #d3d6da;
251
327
 
@@ -253,20 +329,25 @@ const themeMode = useLocalStorage('themeMode')
253
329
  color: #182531;
254
330
  }
255
331
  }
256
- :deep(.stack-block-expanded > .stack-block-label .combobox-input) {
332
+ .stack-block-expanded > .stack-block-label .combobox-input {
257
333
  color: #182531;
258
334
  }
259
- :deep(.stack-block-expanded > .stack-block-label .ui-selected-text) {
335
+ .stack-block-expanded > .stack-block-label .ui-selected-text {
260
336
  color: #182531;
261
337
  }
262
338
 
263
- :deep(.stack-block-label .ui-main-input) {
339
+ .stack-block-label .ui-main-input {
264
340
  background-color: #1b2a371f;
265
341
  }
266
- :deep(.stack-block-expanded > .stack-block-label .ui-main-input) {
342
+ .stack-block-expanded > .stack-block-label .ui-main-input {
267
343
  background-color: #ffffff;
268
344
  border-color: #d3d6da;
269
345
  color: #182531;
270
346
  }
347
+ .ui-select-toggle-button:disabled {
348
+ background-color: #aab1b614;
349
+ border-color: #d3d6da14;
350
+ color: #bdc3c770;
351
+ }
271
352
  }
272
353
  </style>
@@ -376,12 +376,12 @@ const onAddDevice = (data: number): void => {
376
376
  }
377
377
  :root.dark-theme {
378
378
  --vm-wizard-block-view-bg-color: transparent;
379
- --add-device-dropdown-bg-color: #1B2A373D;
380
- --add-device-dropdown-bg-color-hover: linear-gradient(0deg, rgba(43, 162, 222, 0.08) 0%, rgba(43, 162, 222, 0.08) 100%), rgba(27, 42, 55, 0.24);
381
- --add-device-dropdown-border-color: #E9EBED1F;
382
- --add-device-dropdown-border-color-hover: #2BA2DE;
383
- --add-device-dropdown-color: #E9EAEC;
384
- --add-device-dropdown-color-hover: #2BA2DE;
379
+ --add-device-dropdown-bg-color: #1b2a373d;
380
+ --add-device-dropdown-bg-color-hover: #2585b614;
381
+ --add-device-dropdown-border-color: #e9ebed1f;
382
+ --add-device-dropdown-border-color-hover: #2ba2de;
383
+ --add-device-dropdown-color: #e9eaec;
384
+ --add-device-dropdown-color-hover: #2ba2de;
385
385
  --add-device-dropdown-item-title-color: #e9eaec;
386
386
  }
387
387
  </style>
@@ -4,13 +4,21 @@
4
4
  show
5
5
  :title="localization.common.selectStorage"
6
6
  :texts="texts"
7
+ :is-disabled-accept="isDisabledAccept"
7
8
  test-id="storage-modal-new"
8
9
  size="md"
10
+ width="720px"
9
11
  @hide="emits('hide')"
10
12
  @submit="emits('submit')"
11
13
  >
12
14
  <template #content>
13
- <div class="select-storage-modal-container">
15
+ <div
16
+ ref="selectStorageModalContainer"
17
+ :class="[
18
+ 'select-storage-modal-container',
19
+ { 'has-scroll': isHasScroll },
20
+ ]"
21
+ >
14
22
  <span class="description-text">{{
15
23
  localization.common
16
24
  .followingDatastoresAccessibleDestinationResourceThatSelected
@@ -22,7 +30,12 @@
22
30
  hide-compatibility
23
31
  hide-alert
24
32
  @submit="emits('change-storage', $event)"
33
+ @is-selected-row="isDisabledAccept = !$event"
25
34
  />
35
+ <span class="count-text"
36
+ >{{ props.datastore.length }}
37
+ {{ localization.common.datastores }}</span
38
+ >
26
39
  </div>
27
40
  </template>
28
41
  <template #footerLeftContent>
@@ -32,6 +45,7 @@
32
45
  </template>
33
46
 
34
47
  <script setup lang="ts">
48
+ import { useElementSize } from '@vueuse/core'
35
49
  import type { UI_I_ModalTexts } from '~/node_modules/bfg-uikit/components/ui/modal/models/interfaces'
36
50
  import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
37
51
  import type { UI_I_Localization } from '~/lib/models/interfaces'
@@ -52,18 +66,43 @@ const emits = defineEmits<{
52
66
 
53
67
  const localization = computed<UI_I_Localization>(() => useLocal())
54
68
 
69
+ const isDisabledAccept = ref<boolean>(false)
70
+
55
71
  const texts = ref<UI_I_ModalTexts>({
72
+ button1: localization.value.common.cancel,
56
73
  button2: localization.value.common.select,
57
74
  })
75
+
76
+ const selectStorageModalContainer = ref<any>(null)
77
+ const { width, height } = useElementSize(selectStorageModalContainer)
78
+ const isHasScroll = ref<boolean>(false)
79
+ const isScrollVisible = (element: HTMLElement): boolean =>
80
+ element.scrollHeight > element.clientHeight
81
+
82
+ watch([width, height], () => {
83
+ if (!selectStorageModalContainer.value) return
84
+
85
+ isHasScroll.value = isScrollVisible(selectStorageModalContainer.value)
86
+ })
58
87
  </script>
59
88
 
60
89
  <style scoped lang="scss">
61
90
  .select-storage-modal-container {
91
+ height: calc(100vh - 300px);
92
+ overflow-y: auto;
62
93
  display: flex;
63
94
  flex-direction: column;
64
- grid-gap: 12px;
95
+ //grid-gap: 12px;
65
96
  padding-left: 32px;
66
- padding-bottom: 5px;
97
+ padding-top: 8px;
98
+ padding-bottom: 8px;
99
+
100
+ &:not(.has-scroll) {
101
+ padding-right: 32px;
102
+ }
103
+ &.has-scroll {
104
+ padding-right: 18px;
105
+ }
67
106
 
68
107
  .description-text {
69
108
  font-size: 12px;
@@ -71,5 +110,14 @@ const texts = ref<UI_I_ModalTexts>({
71
110
  line-height: 14.52px;
72
111
  color: #9da6ad;
73
112
  }
113
+ .count-text {
114
+ text-align: right;
115
+ font-size: 12px;
116
+ font-weight: 400;
117
+ color: #9da6ad;
118
+ margin-bottom: 8px;
119
+ margin-top: 8px;
120
+ text-transform: lowercase;
121
+ }
74
122
  }
75
123
  </style>
@@ -25,6 +25,9 @@
25
25
  @select="emits('select', $event)"
26
26
  />
27
27
  </div>
28
+ <p class="count-text">
29
+ {{ props.networksTable.length }} {{ localization.common.networks }}
30
+ </p>
28
31
  </template>
29
32
  <template #footerLeftContent>
30
33
  <span></span>
@@ -60,4 +63,14 @@ const modalTexts = ref<UI_I_ModalTexts>({
60
63
  })
61
64
  </script>
62
65
 
63
- <style scoped lang="scss"></style>
66
+ <style scoped lang="scss">
67
+ .count-text {
68
+ text-align: right;
69
+ font-size: 12px;
70
+ font-weight: 400;
71
+ color: #9da6ad;
72
+ margin-bottom: 8px;
73
+ margin-top: 8px;
74
+ text-transform: lowercase;
75
+ }
76
+ </style>
@@ -2,6 +2,7 @@
2
2
  <ui-data-table
3
3
  :data="data"
4
4
  :options="options"
5
+ size="sm"
5
6
  test-id="data-table-main"
6
7
  class="network-table"
7
8
  server-off
@@ -42,6 +42,7 @@ const props = defineProps<{
42
42
  }>()
43
43
  const emits = defineEmits<{
44
44
  (event: 'submit', value: UI_I_DatastoreTableItem): void
45
+ (event: 'is-selected-row', value: boolean): void
45
46
  }>()
46
47
 
47
48
  const { $store }: any = useNuxtApp()
@@ -97,6 +98,13 @@ watch(
97
98
  },
98
99
  { immediate: true }
99
100
  )
101
+ watch(
102
+ selectedRow,
103
+ (newValue) => {
104
+ emits('is-selected-row', typeof newValue === 'number')
105
+ },
106
+ { immediate: true }
107
+ )
100
108
 
101
109
  watch(
102
110
  () => props.storageSubmit,
@@ -17,6 +17,7 @@
17
17
  :options="tableOptions"
18
18
  :loading="loading"
19
19
  :default-layout="false"
20
+ :texts="tableTexts"
20
21
  test-id="select-storage-data-table"
21
22
  server-off
22
23
  size="sm"
@@ -62,7 +63,10 @@
62
63
  </template>
63
64
 
64
65
  <script setup lang="ts">
65
- import type { UI_I_DataTable } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
66
+ import type {
67
+ UI_I_DataTable,
68
+ UI_I_TableTexts,
69
+ } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
66
70
  import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
67
71
  import type { UI_I_Localization } from '~/lib/models/interfaces'
68
72
  import {
@@ -70,6 +74,7 @@ import {
70
74
  tableDataFunc,
71
75
  tableOptions,
72
76
  } from '~/components/common/vm/actions/common/select/storage/new/lib/config/table'
77
+ import { tableTextsFunc } from '~/lib/config/uiTable'
73
78
 
74
79
  const selectedRow = defineModel<number | null>('selectedRow')
75
80
 
@@ -87,6 +92,10 @@ const emits = defineEmits<{
87
92
 
88
93
  const localization = computed<UI_I_Localization>(() => useLocal())
89
94
 
95
+ const tableTexts = computed<UI_I_TableTexts>(() =>
96
+ tableTextsFunc(localization.value)
97
+ )
98
+
90
99
  const storageCount = computed<string>(() =>
91
100
  localization.value.vmWizard.storageCount.replace(
92
101
  '{0}',
@@ -238,8 +238,16 @@ export const tableBodyFunc = (
238
238
  text: localization.common.supported,
239
239
  }
240
240
 
241
- thinProvisioningData = getStatus(item.thin_provisioning)
242
- storage_io_control = getStatus(item.storage_io_control)
241
+ thinProvisioningData = getStatus(
242
+ item.thin_provisioning,
243
+ localization.common.yes,
244
+ localization.common.no
245
+ )
246
+ storage_io_control = getStatus(
247
+ item.storage_io_control,
248
+ localization.common.yes,
249
+ localization.common.no
250
+ )
243
251
 
244
252
  result.push({
245
253
  row: key,
@@ -257,7 +265,7 @@ export const tableBodyFunc = (
257
265
  key: 'state',
258
266
  col: 1,
259
267
  text: stateData.text,
260
- data: stateData
268
+ data: stateData,
261
269
  },
262
270
  { col: 2, text: $binary.round(item.capacity.capacity_mb) },
263
271
  {
@@ -282,7 +290,7 @@ export const tableBodyFunc = (
282
290
  text: item.thin_provisioning
283
291
  ? localization.common.yes
284
292
  : localization.common.no,
285
- data: thinProvisioningData
293
+ data: thinProvisioningData,
286
294
  },
287
295
  {
288
296
  col: 8,
@@ -292,7 +300,7 @@ export const tableBodyFunc = (
292
300
  key: 'state',
293
301
  col: 9,
294
302
  text: item.hardware_acceleration,
295
- data: hardwareAccelerationData
303
+ data: hardwareAccelerationData,
296
304
  },
297
305
  {
298
306
  col: 10,
@@ -306,7 +314,7 @@ export const tableBodyFunc = (
306
314
  key: 'state',
307
315
  col: 12,
308
316
  text: item.storage_io_control,
309
- data: storage_io_control
317
+ data: storage_io_control,
310
318
  },
311
319
  ],
312
320
  })
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bfg-common",
3
3
  "private": false,
4
- "version": "1.5.181",
4
+ "version": "1.5.183",
5
5
  "scripts": {
6
6
  "build": "nuxt build",
7
7
  "dev": "nuxt dev --port=3002",
@@ -34,7 +34,7 @@
34
34
  "@nuxtjs/eslint-config-typescript": "^12.0.0",
35
35
  "@vueuse/components": "^10.1.2",
36
36
  "date-fns": "^2.29.3",
37
- "bfg-nuxt-3-graph": "1.0.24",
37
+ "bfg-nuxt-3-graph": "1.0.25",
38
38
  "bfg-uikit": "1.0.417",
39
39
  "html2canvas": "^1.4.1",
40
40
  "prettier-eslint": "^15.0.1"