bfg-common 1.5.659 → 1.5.661

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 (101) 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/components/atoms/TheIcon3.vue +50 -50
  7. package/components/atoms/collapse/CollapseNav.vue +170 -170
  8. package/components/atoms/perPage/PerPage.vue +58 -58
  9. package/components/atoms/table/dataGrid/DataGrid.vue +1718 -1718
  10. package/components/atoms/table/dataGrid/DataGridPagination.vue +97 -97
  11. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +94 -94
  12. package/components/atoms/table/dataGrid/lib/utils/export.ts +16 -16
  13. package/components/common/backup/storage/actions/add/lib/utils.ts +51 -51
  14. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  15. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  16. package/components/common/diagramMain/port/Port.vue +580 -580
  17. package/components/common/layout/theHeader/TheHeaderNew.vue +315 -315
  18. package/components/common/layout/theHeader/TheHeaderOld.vue +262 -262
  19. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  20. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  21. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +99 -99
  22. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +193 -193
  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/layout/theHeader/userMenu/modals/preferences/security/Old.vue +210 -210
  26. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Security.vue +31 -31
  27. package/components/common/pages/backups/DetailView.vue +52 -52
  28. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  29. package/components/common/pages/backups/modals/Modals.vue +243 -243
  30. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  31. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  32. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  33. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  34. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  35. package/components/common/pages/hardwareHealth/toolsPanel/lib/config/actionsPanel.ts +34 -34
  36. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  37. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  38. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  39. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  40. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  41. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  42. package/components/common/qr/Qr.vue +57 -0
  43. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  44. package/components/common/select/radio/RadioGroup.vue +137 -137
  45. package/components/common/spiceConsole/Drawer.vue +420 -420
  46. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  47. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  48. package/components/common/tools/Actions.vue +207 -207
  49. package/components/common/treeView/TreeView.vue +52 -52
  50. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  51. package/components/common/vm/actions/clone/new/New.vue +438 -438
  52. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  53. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  54. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  55. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  56. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  57. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  58. package/components/common/vm/actions/common/select/options/Old.vue +110 -110
  59. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  60. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  61. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  62. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  63. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  64. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  65. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  66. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  67. package/components/common/wizards/common/compatibility/New.vue +99 -99
  68. package/components/common/wizards/common/compatibility/Old.vue +53 -53
  69. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  70. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  71. package/components/common/wizards/common/steps/name/New.vue +221 -221
  72. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  73. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  74. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  75. package/components/common/wizards/datastore/add/Add.vue +228 -228
  76. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  77. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  78. package/composables/useAppVersion.ts +21 -21
  79. package/composables/useLocal.ts +6 -6
  80. package/composables/useLocalCommon.ts +39 -39
  81. package/nuxt.config.ts +1 -0
  82. package/package.json +3 -3
  83. package/plugins/console.ts +21 -21
  84. package/plugins/mouse.ts +21 -21
  85. package/plugins/panelStates.ts +70 -70
  86. package/plugins/text.ts +59 -59
  87. package/public/spice-console/application/clientgui.js +854 -854
  88. package/public/spice-console/application/packetfactory.js +211 -211
  89. package/public/spice-console/application/virtualmouse.js +147 -147
  90. package/public/spice-console/lib/images/bitmap.js +203 -203
  91. package/public/spice-console/network/spicechannel.js +440 -440
  92. package/public/spice-console/process/cursorprocess.js +128 -128
  93. package/public/spice-console/process/inputprocess.js +227 -227
  94. package/public/spice-console/process/mainprocess.js +212 -212
  95. package/public/spice-console/run.js +210 -210
  96. package/store/main/mutations.ts +7 -7
  97. package/store/main/state.ts +7 -7
  98. package/store/tasks/actions.ts +165 -165
  99. package/store/tasks/mappers/recentTasks.ts +123 -123
  100. package/store/tasks/mutations.ts +82 -82
  101. package/components/common/qrcode/Qrcode.vue +0 -56
@@ -1,110 +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
- <!-- Пока что нужно скрыть-->
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
+ <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>