bfg-common 1.5.697 → 1.5.698

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 (102) 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/scss/common/icons/icons-2.scss +282 -282
  7. package/components/atoms/TheIcon3.vue +50 -50
  8. package/components/atoms/collapse/CollapseNav.vue +170 -170
  9. package/components/atoms/perPage/PerPage.vue +58 -58
  10. package/components/atoms/switch/Switch.vue +103 -103
  11. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  12. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  13. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  14. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  15. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  16. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  17. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  18. package/components/common/diagramMain/port/Port.vue +580 -580
  19. package/components/common/layout/theHeader/TheHeaderNew.vue +315 -315
  20. package/components/common/layout/theHeader/TheHeaderOld.vue +262 -262
  21. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  22. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  23. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +144 -144
  24. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  25. package/components/common/pages/backups/DetailView.vue +52 -52
  26. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  27. package/components/common/pages/backups/modals/Modals.vue +243 -243
  28. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  29. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  30. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  31. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  32. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  33. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  34. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  35. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  36. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  37. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  38. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  39. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  40. package/components/common/select/radio/RadioGroup.vue +137 -137
  41. package/components/common/spiceConsole/Drawer.vue +420 -420
  42. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  43. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  44. package/components/common/tools/Actions.vue +207 -207
  45. package/components/common/treeView/TreeView.vue +52 -52
  46. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  47. package/components/common/vm/actions/clone/new/New.vue +438 -438
  48. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +706 -706
  49. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  50. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  51. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +489 -489
  52. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +253 -253
  53. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  54. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  55. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  56. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  57. package/components/common/vm/actions/common/select/options/Old.vue +109 -109
  58. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  59. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  60. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  61. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  62. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  63. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  64. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  65. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  66. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  67. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  68. package/components/common/wizards/common/steps/name/New.vue +221 -221
  69. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  70. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  71. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  72. package/components/common/wizards/datastore/add/Add.vue +228 -228
  73. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  74. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceNew.vue +232 -232
  75. package/components/common/wizards/datastore/add/steps/nameAndDevice/NameAndDeviceOld.vue +231 -231
  76. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/AdvancedOptions.vue +43 -43
  77. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/New.vue +114 -101
  78. package/components/common/wizards/datastore/add/steps/nameAndDevice/advancedOptions/Old.vue +114 -101
  79. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  80. package/composables/useAppVersion.ts +21 -21
  81. package/composables/useEnvLanguage.ts +22 -22
  82. package/composables/useLocal.ts +6 -6
  83. package/composables/useLocalCommon.ts +39 -39
  84. package/package.json +1 -1
  85. package/plugins/console.ts +21 -21
  86. package/plugins/date.ts +375 -375
  87. package/plugins/mouse.ts +21 -21
  88. package/plugins/panelStates.ts +70 -70
  89. package/plugins/text.ts +59 -59
  90. package/public/spice-console/application/clientgui.js +854 -854
  91. package/public/spice-console/application/packetfactory.js +211 -211
  92. package/public/spice-console/application/virtualmouse.js +147 -147
  93. package/public/spice-console/lib/images/bitmap.js +203 -203
  94. package/public/spice-console/network/spicechannel.js +440 -440
  95. package/public/spice-console/process/cursorprocess.js +128 -128
  96. package/public/spice-console/process/inputprocess.js +227 -227
  97. package/public/spice-console/process/mainprocess.js +212 -212
  98. package/public/spice-console/run.js +210 -210
  99. package/store/main/mutations.ts +7 -7
  100. package/store/main/state.ts +7 -7
  101. package/store/tasks/mappers/recentTasks.ts +123 -123
  102. package/store/tasks/mutations.ts +82 -82
@@ -1,109 +1,109 @@
1
- <template>
2
- <div class="select-options">
3
- <div
4
- v-if="!props.isNewVmFromTemplate"
5
- :class="['checkbox', { disabled: props.isNewVmFromTemplate }]"
6
- >
7
- <input
8
- id="customize-os"
9
- v-model="modelValue"
10
- data-id="customize-os"
11
- type="checkbox"
12
- value="customize-os"
13
- />
14
- <label for="customize-os">{{
15
- localization.common.customizeTheOperatingSystem
16
- }}</label>
17
- </div>
18
- <div v-if="!props.isNewVmFromTemplate" class="checkbox">
19
- <input
20
- id="customize-hardware"
21
- v-model="modelValue"
22
- data-id="customize-hardware"
23
- type="checkbox"
24
- value="customize-hardware"
25
- />
26
- <label for="customize-hardware">{{
27
- localization.common.customizeThisVirtualMachineHardware
28
- }}</label>
29
- </div>
30
- <div class="checkbox">
31
- <input
32
- id="power-on"
33
- v-model="modelValue"
34
- data-id="power-on"
35
- type="checkbox"
36
- value="power-on"
37
- />
38
- <label for="power-on">{{
39
- localization.common.powerOnVirtualMachineAfterCreation
40
- }}</label>
41
- </div>
42
- <!-- Пока что нужно скрыть-->
43
- <!-- <div v-if="props.isNewVmFromTemplate" class="checkbox">-->
44
- <!-- &lt;!&ndash; :disabled="props.isNewVmFromTemplate"&ndash;&gt;-->
45
- <!-- <input-->
46
- <!-- id="create-linked-clone"-->
47
- <!-- v-model="modelValue"-->
48
- <!-- data-id="create-linked-clone"-->
49
- <!-- type="checkbox"-->
50
- <!-- value="create-linked-clone"-->
51
- <!-- />-->
52
- <!-- <label for="create-linked-clone">{{-->
53
- <!-- localization.vmWizard.createLinkedClone-->
54
- <!-- }}</label>-->
55
-
56
- <!-- <input-->
57
- <!-- v-if="props.project !== 'sphere'"-->
58
- <!-- v-model="cloneCount"-->
59
- <!-- :disabled="!isLinkedClone"-->
60
- <!-- data-id="clone-count"-->
61
- <!-- type="number"-->
62
- <!-- class="ml-1"-->
63
- <!-- :min="0"-->
64
- <!-- :max="1000"-->
65
- <!-- />-->
66
- <!-- </div>-->
67
- </div>
68
- </template>
69
-
70
- <script setup lang="ts">
71
- import type { UI_I_Localization } from '~/lib/models/interfaces'
72
- import type { UI_T_Project } from '~/lib/models/types'
73
-
74
- const modelValue = defineModel<string[]>()
75
- // const cloneCount = defineModel<number>('cloneCount')
76
-
77
- const props = withDefaults(
78
- defineProps<{
79
- project?: UI_T_Project
80
- isNewVmFromTemplate?: boolean // TODO change
81
- }>(),
82
- {
83
- project: undefined,
84
- isNewVmFromTemplate: undefined,
85
- }
86
- )
87
-
88
- const localization = computed<UI_I_Localization>(() => useLocal())
89
-
90
- // const isLinkedClone = computed<boolean>(
91
- // () => modelValue.value?.includes('create-linked-clone') || false
92
- // )
93
- </script>
94
-
95
- <style scoped lang="scss">
96
- .select-options {
97
- padding: 12px 0 0;
98
-
99
- .disabled {
100
- input,
101
- label {
102
- cursor: not-allowed;
103
- }
104
- }
105
- .checkbox {
106
- margin: 6px 0;
107
- }
108
- }
109
- </style>
1
+ <template>
2
+ <div class="select-options">
3
+ <div
4
+ v-if="!props.isNewVmFromTemplate"
5
+ :class="['checkbox', { disabled: props.isNewVmFromTemplate }]"
6
+ >
7
+ <input
8
+ id="customize-os"
9
+ v-model="modelValue"
10
+ data-id="customize-os"
11
+ type="checkbox"
12
+ value="customize-os"
13
+ />
14
+ <label for="customize-os">{{
15
+ localization.common.customizeTheOperatingSystem
16
+ }}</label>
17
+ </div>
18
+ <div v-if="!props.isNewVmFromTemplate" class="checkbox">
19
+ <input
20
+ id="customize-hardware"
21
+ v-model="modelValue"
22
+ data-id="customize-hardware"
23
+ type="checkbox"
24
+ value="customize-hardware"
25
+ />
26
+ <label for="customize-hardware">{{
27
+ localization.common.customizeThisVirtualMachineHardware
28
+ }}</label>
29
+ </div>
30
+ <div class="checkbox">
31
+ <input
32
+ id="power-on"
33
+ v-model="modelValue"
34
+ data-id="power-on"
35
+ type="checkbox"
36
+ value="power-on"
37
+ />
38
+ <label for="power-on">{{
39
+ localization.common.powerOnVirtualMachineAfterCreation
40
+ }}</label>
41
+ </div>
42
+ <!-- Пока что нужно скрыть-->
43
+ <!-- <div v-if="props.isNewVmFromTemplate" class="checkbox">-->
44
+ <!-- &lt;!&ndash; :disabled="props.isNewVmFromTemplate"&ndash;&gt;-->
45
+ <!-- <input-->
46
+ <!-- id="create-linked-clone"-->
47
+ <!-- v-model="modelValue"-->
48
+ <!-- data-id="create-linked-clone"-->
49
+ <!-- type="checkbox"-->
50
+ <!-- value="create-linked-clone"-->
51
+ <!-- />-->
52
+ <!-- <label for="create-linked-clone">{{-->
53
+ <!-- localization.vmWizard.createLinkedClone-->
54
+ <!-- }}</label>-->
55
+
56
+ <!-- <input-->
57
+ <!-- v-if="props.project !== 'sphere'"-->
58
+ <!-- v-model="cloneCount"-->
59
+ <!-- :disabled="!isLinkedClone"-->
60
+ <!-- data-id="clone-count"-->
61
+ <!-- type="number"-->
62
+ <!-- class="ml-1"-->
63
+ <!-- :min="0"-->
64
+ <!-- :max="1000"-->
65
+ <!-- />-->
66
+ <!-- </div>-->
67
+ </div>
68
+ </template>
69
+
70
+ <script setup lang="ts">
71
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
72
+ import type { UI_T_Project } from '~/lib/models/types'
73
+
74
+ const modelValue = defineModel<string[]>()
75
+ // const cloneCount = defineModel<number>('cloneCount')
76
+
77
+ const props = withDefaults(
78
+ defineProps<{
79
+ project?: UI_T_Project
80
+ isNewVmFromTemplate?: boolean // TODO change
81
+ }>(),
82
+ {
83
+ project: undefined,
84
+ isNewVmFromTemplate: undefined,
85
+ }
86
+ )
87
+
88
+ const localization = computed<UI_I_Localization>(() => useLocal())
89
+
90
+ // const isLinkedClone = computed<boolean>(
91
+ // () => modelValue.value?.includes('create-linked-clone') || false
92
+ // )
93
+ </script>
94
+
95
+ <style scoped lang="scss">
96
+ .select-options {
97
+ padding: 12px 0 0;
98
+
99
+ .disabled {
100
+ input,
101
+ label {
102
+ cursor: not-allowed;
103
+ }
104
+ }
105
+ .checkbox {
106
+ margin: 6px 0;
107
+ }
108
+ }
109
+ </style>
@@ -1,58 +1,58 @@
1
- <template>
2
- <component
3
- v-model="selectedOptions"
4
- v-model:clone-count="cloneCount"
5
- :is="currentComponent"
6
- :project="props.project"
7
- :is-new-vm-from-template="props.isNewVmFromTemplate"
8
- />
9
- </template>
10
-
11
- <script setup lang="ts">
12
- import type { UI_T_Project } from '~/lib/models/types'
13
-
14
- const props = withDefaults(
15
- defineProps<{
16
- project?: UI_T_Project
17
- isNewVmFromTemplate?: boolean // TODO change
18
- }>(),
19
- {
20
- project: undefined,
21
- isNewVmFromTemplate: undefined,
22
- }
23
- )
24
-
25
- const emits = defineEmits<{
26
- (event: 'change', value: string[]): void
27
- (event: 'change-count', value: number): void
28
- }>()
29
-
30
- const { $store }: any = useNuxtApp()
31
-
32
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
33
- const currentComponent = computed(() =>
34
- isNewView.value
35
- ? defineAsyncComponent(() => import('./New.vue'))
36
- : defineAsyncComponent(() => import('./Old.vue'))
37
- )
38
-
39
- const selectedOptions = ref<string[]>([])
40
- watch(selectedOptions, (newValue) => {
41
- emits('change', newValue)
42
- })
43
- const cloneCount = ref<number>(0) // For Deploy
44
- watch(cloneCount, (newValue) => {
45
- if (newValue < 0) {
46
- cloneCount.value = 0
47
- return
48
- }
49
- if (newValue > 1000) {
50
- cloneCount.value = 1000
51
- return
52
- }
53
-
54
- emits('change-count', newValue)
55
- })
56
- </script>
57
-
58
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <component
3
+ v-model="selectedOptions"
4
+ v-model:clone-count="cloneCount"
5
+ :is="currentComponent"
6
+ :project="props.project"
7
+ :is-new-vm-from-template="props.isNewVmFromTemplate"
8
+ />
9
+ </template>
10
+
11
+ <script setup lang="ts">
12
+ import type { UI_T_Project } from '~/lib/models/types'
13
+
14
+ const props = withDefaults(
15
+ defineProps<{
16
+ project?: UI_T_Project
17
+ isNewVmFromTemplate?: boolean // TODO change
18
+ }>(),
19
+ {
20
+ project: undefined,
21
+ isNewVmFromTemplate: undefined,
22
+ }
23
+ )
24
+
25
+ const emits = defineEmits<{
26
+ (event: 'change', value: string[]): void
27
+ (event: 'change-count', value: number): void
28
+ }>()
29
+
30
+ const { $store }: any = useNuxtApp()
31
+
32
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
33
+ const currentComponent = computed(() =>
34
+ isNewView.value
35
+ ? defineAsyncComponent(() => import('./New.vue'))
36
+ : defineAsyncComponent(() => import('./Old.vue'))
37
+ )
38
+
39
+ const selectedOptions = ref<string[]>([])
40
+ watch(selectedOptions, (newValue) => {
41
+ emits('change', newValue)
42
+ })
43
+ const cloneCount = ref<number>(0) // For Deploy
44
+ watch(cloneCount, (newValue) => {
45
+ if (newValue < 0) {
46
+ cloneCount.value = 0
47
+ return
48
+ }
49
+ if (newValue > 1000) {
50
+ cloneCount.value = 1000
51
+ return
52
+ }
53
+
54
+ emits('change-count', newValue)
55
+ })
56
+ </script>
57
+
58
+ <style scoped lang="scss"></style>
@@ -1,125 +1,125 @@
1
- <template>
2
- <div class="select-storage">
3
- <atoms-alert
4
- v-show="props.errors.length"
5
- :items="props.errors"
6
- status="alert-danger"
7
- test-id="storage-alert"
8
- @remove="emits('remove-error')"
9
- />
10
- <div class="table-wrap">
11
- <atoms-table-data-grid
12
- v-model:selected-row="selectedRow"
13
- v-model:column-keys="columnKeys"
14
- v-model:page-size="pagination.pageSize"
15
- v-model:page="pagination.page"
16
- :head-items="headItems"
17
- :body-items="bodyItems"
18
- :total-items="bodyItems.length"
19
- :total-pages="1"
20
- :loading="props.isDatastoreLoading"
21
- type="radio"
22
- test-id="storage-table"
23
- server-off
24
- hide-page-size
25
- @change="emits('change-storage', $event)"
26
- >
27
- <template #icon="{ item }">
28
- <span :class="['datagrid-cell-icon', item.data]" />
29
- <span class="text-ellipsis">
30
- {{ item.text }}
31
- </span>
32
- </template>
33
- </atoms-table-data-grid>
34
- </div>
35
-
36
- <common-wizards-common-compatibility
37
- v-if="!props.hideCompatibility"
38
- :status="props.compatibility[0]"
39
- :text="props.compatibility[1]"
40
- />
41
- </div>
42
- </template>
43
-
44
- <script setup lang="ts">
45
- import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
46
- import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
47
- import type { UI_I_Localization } from '~/lib/models/interfaces'
48
- import type {
49
- UI_I_ColumnKey,
50
- UI_I_HeadItem,
51
- UI_I_BodyItem,
52
- } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
53
- import type { UI_T_CompatibilityStatus } from '~/components/common/wizards/common/compatibility/lib/models/types'
54
- import * as table from '~/components/common/vm/actions/common/select/storage/lib/config/config'
55
-
56
- const selectedRow = defineModel<number | null>('selectedRow')
57
- const pagination = defineModel<UI_I_Pagination>('pagination', {
58
- required: true,
59
- })
60
-
61
- const props = withDefaults(
62
- defineProps<{
63
- datastore: UI_I_DatastoreTableItem[]
64
- isDatastoreLoading: boolean
65
- errors: string[]
66
- selectedStorage: UI_I_DatastoreTableItem | null
67
- compatibility: [UI_T_CompatibilityStatus, string]
68
- hideCompatibility?: boolean
69
- }>(),
70
- {
71
- hideCompatibility: undefined,
72
- }
73
- )
74
- const emits = defineEmits<{
75
- (event: 'remove-error'): void
76
- (event: 'change-storage', value: number): void
77
- }>()
78
-
79
- const localization = computed<UI_I_Localization>(() => useLocal())
80
-
81
- const headItems = ref<UI_I_HeadItem[]>(table.headItems(localization.value))
82
- const columnKeys = ref<UI_I_ColumnKey[]>(table.columnKeys(localization.value))
83
- watch(localization, () => {
84
- columnKeys.value = table.columnKeys(localization.value)
85
- })
86
-
87
- const bodyItems = computed<UI_I_BodyItem[][]>(() => {
88
- return table.bodyItems(props.datastore || [], localization.value)
89
- })
90
- </script>
91
-
92
- <style scoped lang="scss">
93
- .select-storage {
94
- flex: 1;
95
- display: flex;
96
- flex-direction: column;
97
-
98
- .table-wrap {
99
- flex: 1;
100
-
101
- .datagrid-cell-icon {
102
- margin-right: 6px;
103
- }
104
-
105
- :deep(.relative) {
106
- height: 100%;
107
-
108
- .datagrid-outer-wrapper {
109
- height: 100%;
110
- }
111
- }
112
- }
113
-
114
- .compatibility-wrap {
115
- padding-top: 10px;
116
-
117
- .compatibility-message {
118
- border: 1px solid #000;
119
- padding-top: 5px;
120
- padding-left: 5px;
121
- overflow: auto;
122
- }
123
- }
124
- }
125
- </style>
1
+ <template>
2
+ <div class="select-storage">
3
+ <atoms-alert
4
+ v-show="props.errors.length"
5
+ :items="props.errors"
6
+ status="alert-danger"
7
+ test-id="storage-alert"
8
+ @remove="emits('remove-error')"
9
+ />
10
+ <div class="table-wrap">
11
+ <atoms-table-data-grid
12
+ v-model:selected-row="selectedRow"
13
+ v-model:column-keys="columnKeys"
14
+ v-model:page-size="pagination.pageSize"
15
+ v-model:page="pagination.page"
16
+ :head-items="headItems"
17
+ :body-items="bodyItems"
18
+ :total-items="bodyItems.length"
19
+ :total-pages="1"
20
+ :loading="props.isDatastoreLoading"
21
+ type="radio"
22
+ test-id="storage-table"
23
+ server-off
24
+ hide-page-size
25
+ @change="emits('change-storage', $event)"
26
+ >
27
+ <template #icon="{ item }">
28
+ <span :class="['datagrid-cell-icon', item.data]" />
29
+ <span class="text-ellipsis">
30
+ {{ item.text }}
31
+ </span>
32
+ </template>
33
+ </atoms-table-data-grid>
34
+ </div>
35
+
36
+ <common-wizards-common-compatibility
37
+ v-if="!props.hideCompatibility"
38
+ :status="props.compatibility[0]"
39
+ :text="props.compatibility[1]"
40
+ />
41
+ </div>
42
+ </template>
43
+
44
+ <script setup lang="ts">
45
+ import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
46
+ import type { UI_I_DatastoreTableItem } from '~/lib/models/store/storage/interfaces'
47
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
48
+ import type {
49
+ UI_I_ColumnKey,
50
+ UI_I_HeadItem,
51
+ UI_I_BodyItem,
52
+ } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
53
+ import type { UI_T_CompatibilityStatus } from '~/components/common/wizards/common/compatibility/lib/models/types'
54
+ import * as table from '~/components/common/vm/actions/common/select/storage/lib/config/config'
55
+
56
+ const selectedRow = defineModel<number | null>('selectedRow')
57
+ const pagination = defineModel<UI_I_Pagination>('pagination', {
58
+ required: true,
59
+ })
60
+
61
+ const props = withDefaults(
62
+ defineProps<{
63
+ datastore: UI_I_DatastoreTableItem[]
64
+ isDatastoreLoading: boolean
65
+ errors: string[]
66
+ selectedStorage: UI_I_DatastoreTableItem | null
67
+ compatibility: [UI_T_CompatibilityStatus, string]
68
+ hideCompatibility?: boolean
69
+ }>(),
70
+ {
71
+ hideCompatibility: undefined,
72
+ }
73
+ )
74
+ const emits = defineEmits<{
75
+ (event: 'remove-error'): void
76
+ (event: 'change-storage', value: number): void
77
+ }>()
78
+
79
+ const localization = computed<UI_I_Localization>(() => useLocal())
80
+
81
+ const headItems = ref<UI_I_HeadItem[]>(table.headItems(localization.value))
82
+ const columnKeys = ref<UI_I_ColumnKey[]>(table.columnKeys(localization.value))
83
+ watch(localization, () => {
84
+ columnKeys.value = table.columnKeys(localization.value)
85
+ })
86
+
87
+ const bodyItems = computed<UI_I_BodyItem[][]>(() => {
88
+ return table.bodyItems(props.datastore || [], localization.value)
89
+ })
90
+ </script>
91
+
92
+ <style scoped lang="scss">
93
+ .select-storage {
94
+ flex: 1;
95
+ display: flex;
96
+ flex-direction: column;
97
+
98
+ .table-wrap {
99
+ flex: 1;
100
+
101
+ .datagrid-cell-icon {
102
+ margin-right: 6px;
103
+ }
104
+
105
+ :deep(.relative) {
106
+ height: 100%;
107
+
108
+ .datagrid-outer-wrapper {
109
+ height: 100%;
110
+ }
111
+ }
112
+ }
113
+
114
+ .compatibility-wrap {
115
+ padding-top: 10px;
116
+
117
+ .compatibility-message {
118
+ border: 1px solid #000;
119
+ padding-top: 5px;
120
+ padding-left: 5px;
121
+ overflow: auto;
122
+ }
123
+ }
124
+ }
125
+ </style>