bfg-common 1.5.654 → 1.5.656

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 (103) 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 +20 -0
  7. package/assets/localization/local_en.json +20 -0
  8. package/assets/localization/local_hy.json +20 -0
  9. package/assets/localization/local_kk.json +20 -0
  10. package/assets/localization/local_ru.json +20 -0
  11. package/assets/localization/local_zh.json +20 -0
  12. package/components/atoms/TheIcon3.vue +50 -50
  13. package/components/atoms/collapse/CollapseNav.vue +170 -170
  14. package/components/atoms/perPage/PerPage.vue +58 -58
  15. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  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/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  22. package/components/common/diagramMain/port/Port.vue +580 -580
  23. package/components/common/layout/theHeader/TheHeaderNew.vue +310 -310
  24. package/components/common/layout/theHeader/TheHeaderOld.vue +257 -257
  25. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  26. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  27. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +99 -99
  28. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +193 -193
  29. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  30. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Old.vue +120 -120
  31. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Security.vue +23 -23
  32. package/components/common/pages/backups/DetailView.vue +52 -52
  33. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  34. package/components/common/pages/backups/modals/Modals.vue +243 -243
  35. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  36. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  37. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  38. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  39. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  40. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  41. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  42. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  43. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  44. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  45. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  46. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  47. package/components/common/select/radio/RadioGroup.vue +137 -137
  48. package/components/common/spiceConsole/Drawer.vue +420 -420
  49. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  50. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  51. package/components/common/tools/Actions.vue +207 -207
  52. package/components/common/treeView/TreeView.vue +52 -52
  53. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  54. package/components/common/vm/actions/clone/new/New.vue +438 -438
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  57. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  58. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  59. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  60. package/components/common/vm/actions/common/select/options/New.vue +264 -263
  61. package/components/common/vm/actions/common/select/options/Old.vue +110 -109
  62. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  63. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  64. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  65. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  66. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  67. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  68. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  69. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  70. package/components/common/wizards/common/compatibility/New.vue +99 -99
  71. package/components/common/wizards/common/compatibility/Old.vue +53 -53
  72. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  73. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  74. package/components/common/wizards/common/steps/name/New.vue +221 -221
  75. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  76. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  77. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  78. package/components/common/wizards/datastore/add/Add.vue +228 -228
  79. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  80. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  81. package/composables/useAppVersion.ts +21 -21
  82. package/composables/useLocal.ts +6 -6
  83. package/composables/useLocalCommon.ts +39 -39
  84. package/lib/models/interfaces.ts +1 -0
  85. package/package.json +1 -1
  86. package/plugins/console.ts +21 -21
  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/actions.ts +165 -165
  102. package/store/tasks/mappers/recentTasks.ts +123 -123
  103. package/store/tasks/mutations.ts +82 -82
@@ -1,109 +1,110 @@
1
- <template>
2
- <div class="select-options">
3
- <div
4
- v-show="!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
- <!-- :disabled="props.isNewVmFromTemplate"-->
32
- <input
33
- id="power-on"
34
- v-model="modelValue"
35
- data-id="power-on"
36
- type="checkbox"
37
- value="power-on"
38
- />
39
- <label for="power-on">{{
40
- localization.common.powerOnVirtualMachineAfterCreation
41
- }}</label>
42
- </div>
43
- <div v-if="props.isNewVmFromTemplate" class="checkbox">
44
- <!-- :disabled="props.isNewVmFromTemplate"-->
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-show="!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
+ <!-- :disabled="props.isNewVmFromTemplate"-->
32
+ <input
33
+ id="power-on"
34
+ v-model="modelValue"
35
+ data-id="power-on"
36
+ type="checkbox"
37
+ value="power-on"
38
+ />
39
+ <label for="power-on">{{
40
+ localization.common.powerOnVirtualMachineAfterCreation
41
+ }}</label>
42
+ </div>
43
+ <!-- Пока что нужно скрыть-->
44
+ <!-- <div v-if="props.isNewVmFromTemplate" class="checkbox">-->
45
+ <!-- &lt;!&ndash; :disabled="props.isNewVmFromTemplate"&ndash;&gt;-->
46
+ <!-- <input-->
47
+ <!-- id="create-linked-clone"-->
48
+ <!-- v-model="modelValue"-->
49
+ <!-- data-id="create-linked-clone"-->
50
+ <!-- type="checkbox"-->
51
+ <!-- value="create-linked-clone"-->
52
+ <!-- />-->
53
+ <!-- <label for="create-linked-clone">{{-->
54
+ <!-- localization.vmWizard.createLinkedClone-->
55
+ <!-- }}</label>-->
56
+
57
+ <!-- <input-->
58
+ <!-- v-if="props.project !== 'sphere'"-->
59
+ <!-- v-model="cloneCount"-->
60
+ <!-- :disabled="!isLinkedClone"-->
61
+ <!-- data-id="clone-count"-->
62
+ <!-- type="number"-->
63
+ <!-- class="ml-1"-->
64
+ <!-- :min="0"-->
65
+ <!-- :max="1000"-->
66
+ <!-- />-->
67
+ <!-- </div>-->
68
+ </div>
69
+ </template>
70
+
71
+ <script setup lang="ts">
72
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
73
+ import type { UI_T_Project } from '~/lib/models/types'
74
+
75
+ const modelValue = defineModel<string[]>()
76
+ // const cloneCount = defineModel<number>('cloneCount')
77
+
78
+ const props = withDefaults(
79
+ defineProps<{
80
+ project?: UI_T_Project
81
+ isNewVmFromTemplate?: boolean // TODO change
82
+ }>(),
83
+ {
84
+ project: undefined,
85
+ isNewVmFromTemplate: undefined,
86
+ }
87
+ )
88
+
89
+ const localization = computed<UI_I_Localization>(() => useLocal())
90
+
91
+ // const isLinkedClone = computed<boolean>(
92
+ // () => modelValue.value?.includes('create-linked-clone') || false
93
+ // )
94
+ </script>
95
+
96
+ <style scoped lang="scss">
97
+ .select-options {
98
+ padding: 12px 0 0;
99
+
100
+ .disabled {
101
+ input,
102
+ label {
103
+ cursor: not-allowed;
104
+ }
105
+ }
106
+ .checkbox {
107
+ margin: 6px 0;
108
+ }
109
+ }
110
+ </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>