bfg-common 1.5.538 → 1.5.540

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 (50) hide show
  1. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  2. package/components/common/browse/lib/models/interfaces.ts +5 -5
  3. package/components/common/diagramMain/modals/lib/config/portModal.ts +251 -251
  4. package/components/common/diagramMain/modals/lib/config/vCenterModal.ts +48 -48
  5. package/components/common/diagramMain/network/Contents.vue +497 -497
  6. package/components/common/diagramMain/port/Port.vue +580 -580
  7. package/components/common/pages/backups/modals/createBackup/CreateBackup.vue +1 -1
  8. package/components/common/pages/backups/modals/createBackup/configuration/backupWindow/BackupWindow.vue +29 -29
  9. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/MaxBandwidth.vue +69 -69
  10. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  11. package/components/common/pages/backups/modals/createBackup/configuration/strategy/Strategy.vue +38 -38
  12. package/components/common/pages/backups/modals/createBackup/datastores/tableView/new/TableView.vue +3 -3
  13. package/components/common/pages/backups/modals/createBackup/disks/tableView/new/lib/config/table.ts +1 -0
  14. package/components/common/pages/backups/modals/createBackup/lib/models/interfaces.ts +8 -8
  15. package/components/common/pages/backups/modals/restore/Restore.vue +78 -196
  16. package/components/common/pages/backups/modals/restore/RestoreNew.vue +289 -0
  17. package/components/common/pages/backups/modals/restore/RestoreOld.vue +173 -0
  18. package/components/common/pages/backups/modals/restore/disks/Disks.vue +14 -9
  19. package/components/common/pages/backups/modals/restore/disks/DisksNew.vue +17 -0
  20. package/components/common/pages/backups/modals/restore/disks/DisksOld.vue +21 -0
  21. package/components/common/pages/backups/modals/restore/disks/tableView/new/Table.vue +126 -0
  22. package/components/common/pages/backups/modals/restore/disks/tableView/new/lib/config/table.ts +175 -0
  23. package/components/common/pages/backups/modals/restore/disks/tableView/{TableView.vue → old/Table.vue} +6 -3
  24. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/config/keys.ts +1 -1
  25. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/config/table.ts +1 -1
  26. package/components/common/pages/backups/modals/restore/disks/tableView/{lib → old/lib}/models/types.ts +1 -1
  27. package/components/common/pages/backups/modals/restore/lib/config/readyToCompleteOptions.ts +62 -0
  28. package/components/common/pages/backups/modals/restore/lib/config/steps.ts +21 -21
  29. package/components/common/pages/backups/modals/restore/name/Name.vue +16 -151
  30. package/components/common/pages/backups/modals/restore/name/NameNew.vue +98 -0
  31. package/components/common/pages/backups/modals/restore/name/NameOld.vue +86 -0
  32. package/components/common/pages/backups/modals/restore/networks/Networks.vue +18 -25
  33. package/components/common/pages/backups/modals/restore/networks/NetworksNew.vue +78 -0
  34. package/components/common/pages/backups/modals/restore/networks/NetworksOld.vue +48 -0
  35. package/components/common/pages/backups/modals/restore/networks/table/new/Table.vue +269 -0
  36. package/components/common/pages/backups/modals/restore/networks/table/new/lib/config/table.ts +127 -0
  37. package/components/common/pages/backups/modals/restore/networks/table/{Table.vue → old/Table.vue} +8 -3
  38. package/components/common/pages/backups/modals/restore/networks/table/{adapterType → old/adapterType}/AdapterType.vue +1 -1
  39. package/components/common/pages/backups/modals/restore/networks/table/{lib → old/lib}/config/networkTable.ts +1 -1
  40. package/components/common/pages/backups/modals/restore/networks/table/old/lib/config/tableKeys.ts +8 -0
  41. package/components/common/pages/backups/modals/restore/types/Types.vue +9 -50
  42. package/components/common/pages/backups/modals/restore/types/TypesNew.vue +95 -0
  43. package/components/common/pages/backups/modals/restore/types/TypesOld.vue +61 -0
  44. package/components/common/pages/backups/modals/restore/types/lib/config/descriptions.ts +1 -0
  45. package/components/common/pages/backups/modals/restore/types/lib/config/typeOptions.ts +1 -1
  46. package/components/common/pages/backups/modals/restore/validation/validation.ts +108 -0
  47. package/package.json +1 -1
  48. package/components/common/pages/backups/modals/restore/networks/table/lib/config/tableKeys.ts +0 -10
  49. /package/components/common/pages/backups/modals/restore/networks/table/{adapterType → old/adapterType}/lib/config/options.ts +0 -0
  50. /package/components/common/pages/backups/modals/restore/networks/table/{lib → old/lib}/models/types.ts +0 -0
@@ -0,0 +1,269 @@
1
+ <template>
2
+ <div class="networks-table">
3
+ <ui-data-table
4
+ :data="data"
5
+ :options="options"
6
+ :loading="props.networksLoading"
7
+ :total-pages="1"
8
+ :total-items="props.networks?.length || 0"
9
+ :texts="texts"
10
+ :default-layout="false"
11
+ :skeleton="skeletonData"
12
+ size="sm"
13
+ test-id="backup-restore-networks-table"
14
+ >
15
+ <template #icon="{ item }">
16
+ <span :class="['icon', item.data.iconClassName]"></span>
17
+ <span :title="item.text" class="text-ellipsis ml-1 networks-table-text">
18
+ {{ item.text }}
19
+ </span>
20
+ </template>
21
+
22
+ <template #select="item">
23
+ <div v-if="item.item.data.type === 'select-network'" class="w-full">
24
+ <ui-select
25
+ v-model="selectedLocation"
26
+ :items="locationOptions"
27
+ test-id="select-network-type"
28
+ size="sm"
29
+ class="network-type-select"
30
+ select-width="100%"
31
+ show-text
32
+ @change="changeLocation($event, item.item.data.key)"
33
+ />
34
+ </div>
35
+
36
+ <div v-if="item.item.data.type === 'select-adapter'" class="w-full">
37
+ <ui-select
38
+ v-model="model.pvm.network_devices[item.item.data.key].model"
39
+ :items="adapterTypeOptionsConfig"
40
+ test-id="select-adapter-type"
41
+ size="sm"
42
+ class="adapter-type-select"
43
+ select-width="112px"
44
+ show-text
45
+ />
46
+ </div>
47
+ </template>
48
+ </ui-data-table>
49
+
50
+ <common-vm-actions-common-customize-hardware-virtual-hardware-new-network-location
51
+ v-if="selectedNetworkKeyForLocation !== -1"
52
+ :location-modal-is-show="selectedNetworkKeyForLocation !== -1"
53
+ :networks-table="props.sourceNetworks"
54
+ @hide="onHideLocationModal"
55
+ @select="onSelectLocation"
56
+ />
57
+ </div>
58
+ </template>
59
+
60
+ <script setup lang="ts">
61
+ import type {
62
+ UI_I_DataTable,
63
+ UI_I_DataTableBody,
64
+ UI_I_DataTableHeader,
65
+ UI_I_DataTableSkeleton,
66
+ UI_I_TableTexts,
67
+ } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
68
+ import {
69
+ getBodyDataFunc,
70
+ getHeaderDataFunc,
71
+ options,
72
+ } from '~/components/common/pages/backups/modals/restore/networks/table/new/lib/config/table'
73
+ import type {
74
+ UI_I_HTMLSelectElement,
75
+ UI_I_Localization,
76
+ } from '~/lib/models/interfaces'
77
+ import { adapterTypeOptionsConfig } from '~/components/common/pages/backups/modals/restore/networks/table/old/adapterType/lib/config/options'
78
+ import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
79
+ import type { UI_I_NetworkTableItem } from '~/lib/models/store/network/interfaces'
80
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
81
+
82
+ const model = defineModel<UI_I_RestoreForm>({ required: true })
83
+
84
+ const props = defineProps<{
85
+ networks: UI_I_RestoreForm['pvm']['network_devices']
86
+ sourceNetworks: UI_I_NetworkTableItem[]
87
+ networksLoading: boolean
88
+ }>()
89
+
90
+ const localization = computed<UI_I_Localization>(() => useLocal())
91
+
92
+ const texts = computed<UI_I_TableTexts>(() => ({
93
+ searchHere: localization.value.common.searchHere,
94
+ rowsPerPage: localization.value.common.rowsPerPage,
95
+ of: localization.value.common.of,
96
+ selected: localization.value.common.selected,
97
+ columns: localization.value.common.columns,
98
+ previous: localization.value.common.previous,
99
+ next: localization.value.common.next,
100
+ noItemsFound: localization.value.common.noItemsFound,
101
+ exportAll: localization.value.common.exportAll,
102
+ exportSelected: localization.value.common.exportSelected,
103
+ all: localization.value.common.all,
104
+ filter: localization.value.common.filter,
105
+ }))
106
+ const skeletonData = ref<UI_I_DataTableSkeleton>({
107
+ columnsCount: 4,
108
+ headColumns: [],
109
+ bodyColumns: [],
110
+ withoutPagination: true,
111
+ })
112
+
113
+ const data = computed<UI_I_DataTable>(() => ({
114
+ id: 'backup-restore-networks-table',
115
+ header: headItems.value,
116
+ body: bodyItems.value,
117
+ title: `${localization.value.common.networks} (${
118
+ props.networks?.length || 0
119
+ })`,
120
+ }))
121
+
122
+ const headItems = computed<UI_I_DataTableHeader[]>(() =>
123
+ getHeaderDataFunc(localization.value)
124
+ )
125
+
126
+ const bodyItems = ref<UI_I_DataTableBody[]>([])
127
+ watch(
128
+ () => props.networks,
129
+ (newValue) => {
130
+ if (!newValue?.length) {
131
+ bodyItems.value = []
132
+ return
133
+ }
134
+
135
+ bodyItems.value = getBodyDataFunc(newValue)
136
+ },
137
+ { deep: true, immediate: true }
138
+ )
139
+
140
+ const selectedLocationOld = ref<string>('')
141
+ const selectedLocation = ref<string>('')
142
+ const locationOptions = ref<UI_I_OptionItem[]>([])
143
+ const selectedNetworkKeyForLocation = ref<number>(-1)
144
+
145
+ watch(
146
+ (): any => props.sourceNetworks,
147
+ (newValue) => {
148
+ if (!props.networks?.length || !newValue?.length) {
149
+ return
150
+ }
151
+ let selectedNetwork: any = null
152
+ model.value.pvm.network_devices = model.value.pvm.network_devices.map(
153
+ (network) => {
154
+ selectedNetwork =
155
+ newValue.find((net) => net.net_bridge === network.net_bridge) ||
156
+ newValue[0]
157
+
158
+ network.network = selectedNetwork.name
159
+ return network
160
+ }
161
+ )
162
+ selectedLocationOld.value = selectedNetwork.net_bridge
163
+ selectedLocation.value = selectedNetwork.net_bridge
164
+
165
+ locationOptions.value = [
166
+ {
167
+ text: selectedNetwork.name,
168
+ value: selectedNetwork.net_bridge,
169
+ },
170
+ { text: `${localization.value.common.browse}...`, value: 'browser' },
171
+ ]
172
+ },
173
+ { immediate: true }
174
+ )
175
+
176
+ const onHideLocationModal = (): void => {
177
+ selectedLocation.value = selectedLocationOld.value
178
+ const network = findNetwork(selectedLocationOld.value)
179
+ model.value.pvm.network_devices[selectedNetworkKeyForLocation.value].network =
180
+ network.name
181
+ model.value.pvm.network_devices[
182
+ selectedNetworkKeyForLocation.value
183
+ ].net_bridge = selectedLocationOld.value
184
+ selectedNetworkKeyForLocation.value = -1
185
+ }
186
+
187
+ const changeLocation = (event: UI_I_HTMLSelectElement, key: number): void => {
188
+ const value = event
189
+
190
+ if (value === 'browser') {
191
+ selectedNetworkKeyForLocation.value = key
192
+ return
193
+ }
194
+
195
+ selectedLocationOld.value = value
196
+ selectedLocation.value = value
197
+ const network = findNetwork(value)
198
+ model.value.pvm.network_devices[key].network = network.name || ''
199
+ model.value.pvm.network_devices[key].net_bridge = value
200
+ }
201
+
202
+ const onSelectLocation = (network: any): void => {
203
+ selectedLocationOld.value = network.net_bridge
204
+ selectedLocation.value = network.net_bridge
205
+ model.value.pvm.network_devices[selectedNetworkKeyForLocation.value].network =
206
+ network.name
207
+ model.value.pvm.network_devices[
208
+ selectedNetworkKeyForLocation.value
209
+ ].net_bridge = network.net_bridge
210
+ selectedNetworkKeyForLocation.value = -1
211
+
212
+ const hasNetwork = locationOptions.value.some(
213
+ (option) => option.value === network.name
214
+ )
215
+ if (hasNetwork) {
216
+ return
217
+ }
218
+
219
+ locationOptions.value = [
220
+ ...locationOptions.value.slice(0, -1),
221
+ { text: network.name, value: network.net_bridge },
222
+ locationOptions.value[locationOptions.value.length - 1],
223
+ ]
224
+ }
225
+
226
+ const findNetwork = (net_bridge: string): any => {
227
+ return props.sourceNetworks.find(
228
+ (network) => network.net_bridge === net_bridge
229
+ )
230
+ }
231
+ </script>
232
+
233
+ <style scoped lang="scss">
234
+ .networks-table {
235
+ :deep(.table-header-content) {
236
+ min-height: auto;
237
+ }
238
+
239
+ :deep(.title-container-top-info h6.title-container-top-selected-rows) {
240
+ font-size: 12px;
241
+ }
242
+
243
+ :deep(.ui-main-no-items-found span) {
244
+ font-size: 14px;
245
+ }
246
+
247
+ .adapter-type-select,
248
+ .network-type-select {
249
+ :deep(.ui-select-toggle-button) {
250
+ height: 28px;
251
+ }
252
+
253
+ :deep(.ui-selected-text) {
254
+ font-size: 12px;
255
+ }
256
+
257
+ :deep(.ui-arrow-icon) {
258
+ svg {
259
+ width: 16px;
260
+ height: 16px;
261
+ }
262
+ }
263
+ }
264
+
265
+ &-text {
266
+ font-size: 12px;
267
+ }
268
+ }
269
+ </style>
@@ -0,0 +1,127 @@
1
+ import type {
2
+ UI_I_DataTableBody,
3
+ UI_I_DataTableOptions,
4
+ UI_I_DataTableHeader,
5
+ } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
6
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
7
+ import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
8
+
9
+ export const getHeaderDataFunc = (
10
+ localization: UI_I_Localization
11
+ ): UI_I_DataTableHeader[] => [
12
+ {
13
+ col: 'col0',
14
+ colName: 'name',
15
+ text: localization.common.name,
16
+ isSortable: true,
17
+ sort: 'asc',
18
+ width: '188px',
19
+ show: true,
20
+ filter: false,
21
+ },
22
+ {
23
+ col: 'col1',
24
+ colName: 'macAddress',
25
+ text: localization.common.macAddress,
26
+ isSortable: true,
27
+ sort: 'asc',
28
+ width: '128px',
29
+ show: true,
30
+ filter: false,
31
+ },
32
+ {
33
+ col: 'col2',
34
+ colName: 'adapterType',
35
+ text: localization.common.adapterType,
36
+ isSortable: true,
37
+ sort: 'asc',
38
+ width: '112px',
39
+ show: true,
40
+ filter: false,
41
+ },
42
+ {
43
+ col: 'col3',
44
+ colName: 'networkInProcurator',
45
+ text: localization.common.networkInProcurator,
46
+ isSortable: true,
47
+ sort: 'asc',
48
+ width: '188px',
49
+ show: true,
50
+ filter: false,
51
+ },
52
+ ]
53
+
54
+ export const options: UI_I_DataTableOptions = {
55
+ perPageOptions: [{ text: '10', value: 100, default: true }],
56
+ isSelectable: false,
57
+ isFocusable: false,
58
+ showPagination: false,
59
+ showPaginationOnTop: false,
60
+ selectType: 'checkbox',
61
+ showPageInfo: false,
62
+ isSortable: true,
63
+ server: false,
64
+ isResizable: true,
65
+ showSearch: false,
66
+ showSelectedRows: false,
67
+ showColumnManager: false,
68
+ withActions: false,
69
+ inBlock: false,
70
+ inModal: true,
71
+ showExport: false,
72
+ withCollapse: false,
73
+ }
74
+
75
+ export const getBodyDataFunc = (
76
+ bodyData: UI_I_RestoreForm['pvm']['network_devices']
77
+ ): UI_I_DataTableBody[] => {
78
+ return bodyData.map((network, index: number) => {
79
+ const dataAdapterType = {
80
+ key: index,
81
+ id: `${network.vm_name}-select`,
82
+ sourceNetwork: network.source_network,
83
+ disabled: false,
84
+ type: 'select-adapter',
85
+ network: network.network,
86
+ }
87
+ const dataSelectNetwork = {
88
+ key: index,
89
+ id: `${network.vm_name}-select`,
90
+ type: 'select-network',
91
+ network: network.network,
92
+ }
93
+
94
+ return {
95
+ row: index,
96
+ collapse: false,
97
+ isHiddenCollapse: false,
98
+ collapseToggle: false,
99
+ data: [
100
+ {
101
+ key: 'icon',
102
+ col: 'col0',
103
+ text: network.import_source_id,
104
+ data: {
105
+ iconClassName: 'vsphere-icon-network',
106
+ },
107
+ },
108
+ {
109
+ col: 'col1',
110
+ text: network.mac,
111
+ },
112
+ {
113
+ col: 'col2',
114
+ key: 'select',
115
+ text: network.target,
116
+ data: dataAdapterType,
117
+ },
118
+ {
119
+ col: 'col3',
120
+ key: 'select',
121
+ data: dataSelectNetwork,
122
+ text: network.network,
123
+ },
124
+ ],
125
+ }
126
+ })
127
+ }
@@ -5,7 +5,7 @@
5
5
  v-model:page="pagination.page"
6
6
  :head-items="headItems"
7
7
  :body-items="bodyItems"
8
- :total-items="bodyItems.length"
8
+ :total-items="bodyItems.length || 0"
9
9
  :total-pages="1"
10
10
  :loading="props.loading"
11
11
  off-select-by-row
@@ -36,7 +36,7 @@
36
36
  </select>
37
37
  </div>
38
38
 
39
- <common-pages-backups-modals-restore-networks-table-adapter-type
39
+ <common-pages-backups-modals-restore-networks-table-old-adapter-type
40
40
  v-if="data.item.data.type === 'select-adapter'"
41
41
  v-model="model.pvm.network_devices[data.item.data.key].model"
42
42
  />
@@ -66,7 +66,7 @@ import type {
66
66
  UI_I_BodyItem,
67
67
  } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
68
68
  import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
69
- import * as table from '~/components/common/pages/backups/modals/restore/networks/table/lib/config/networkTable'
69
+ import * as table from '~/components/common/pages/backups/modals/restore/networks/table/old/lib/config/networkTable'
70
70
 
71
71
  const model = defineModel<UI_I_RestoreForm>({ required: true })
72
72
  const props = defineProps<{
@@ -191,20 +191,25 @@ const findNetwork = (net_bridge: string): any => {
191
191
  <style lang="scss" scoped>
192
192
  .table-view-wrapper {
193
193
  height: inherit;
194
+
194
195
  .networks-table {
195
196
  height: inherit;
197
+
196
198
  :deep(.datagrid-outer-wrapper) {
197
199
  height: inherit;
198
200
  margin-top: 0;
199
201
  }
202
+
200
203
  :deep(.datagrid) {
201
204
  padding-top: 0;
202
205
  height: inherit;
203
206
  }
207
+
204
208
  &__select {
205
209
  width: 100%;
206
210
  height: 24px;
207
211
  min-width: 107px;
212
+
208
213
  & > select {
209
214
  height: 100%;
210
215
  }
@@ -22,7 +22,7 @@
22
22
  import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
23
23
  import {
24
24
  adapterTypeOptionsConfig
25
- } from '~/components/common/pages/backups/modals/restore/networks/table/adapterType/lib/config/options'
25
+ } from '~/components/common/pages/backups/modals/restore/networks/table/old/adapterType/lib/config/options'
26
26
 
27
27
  const adapterTypeLocal = defineModel<string>()
28
28
 
@@ -4,7 +4,7 @@ import type {
4
4
  } from '~/components/atoms/table/dataGrid/lib/models/interfaces'
5
5
  import type { UI_I_Localization } from '~/lib/models/interfaces'
6
6
  import { constructHeadItem } from '~/components/atoms/table/dataGrid/lib/utils/constructDataTable'
7
- import { networkTableItemKeys } from '~/components/common/pages/backups/modals/restore/networks/table/lib/config/tableKeys'
7
+ import { networkTableItemKeys } from '~/components/common/pages/backups/modals/restore/networks/table/old/lib/config/tableKeys'
8
8
 
9
9
  const getItems = (
10
10
  localization: UI_I_Localization
@@ -0,0 +1,8 @@
1
+ import type { UI_T_NetworkTableKeysTuple } from '~/components/common/pages/backups/modals/restore/networks/table/old/lib/models/types'
2
+
3
+ export const networkTableItemKeys: UI_T_NetworkTableKeysTuple = [
4
+ 'import_source_id',
5
+ 'mac',
6
+ 'target',
7
+ 'network',
8
+ ]
@@ -1,60 +1,19 @@
1
1
  <template>
2
- <div class="select-restore-type flex">
3
- <atoms-list-select-list
4
- v-model="model.restore_code"
5
- :items="backupTypes"
6
- class="select"
7
- />
8
- <p class="description">
9
- {{ description }}
10
- </p>
11
- </div>
2
+ <common-pages-backups-modals-restore-types-new
3
+ v-if="isNewView"
4
+ v-model="model"
5
+ />
6
+ <common-pages-backups-modals-restore-types-old v-else v-model="model" />
12
7
  </template>
13
8
 
14
9
  <script lang="ts" setup>
15
- import type { UI_I_Localization } from '~/lib/models/interfaces'
16
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
17
- import type {UI_I_RestoreForm} from "~/components/common/pages/backups/modals/lib/models/interfaces";
18
- import { backupsTypesFunc } from '~/components/common/pages/backups/modals/restore/types/lib/config/typeOptions'
19
- import { descriptionsFunc } from '~/components/common/pages/backups/modals/restore/types/lib/config/descriptions'
10
+ import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
20
11
 
21
12
  const model = defineModel<UI_I_RestoreForm>({ required: true })
22
13
 
23
- const localization = computed<UI_I_Localization>(() => useLocal())
14
+ const { $store }: any = useNuxtApp()
24
15
 
25
- const backupTypes = ref<UI_I_OptionItem[]>(backupsTypesFunc(localization.value))
26
-
27
- const description = computed<string[]>(
28
- () => descriptionsFunc(localization.value)[model.value.restore_code - 1]
29
- )
16
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
30
17
  </script>
31
18
 
32
- <style>
33
- :root {
34
- --type-list-border-color: #ccc;
35
- }
36
- :root.dark-theme {
37
- --type-list-border-color: #000;
38
- }
39
- </style>
40
- <style scoped lang="scss">
41
- .select-restore-type {
42
- padding-top: 12px;
43
-
44
- .description {
45
- color: #333333;
46
- font-size: 13px;
47
- }
48
-
49
- .description,
50
- .select {
51
- flex: 1 1 100%;
52
- margin-right: 5px;
53
- }
54
-
55
- :deep(select) {
56
- background-color: transparent;
57
- border-color: var(--type-list-border-color);
58
- }
59
- }
60
- </style>
19
+ <style scoped lang="scss"></style>
@@ -0,0 +1,95 @@
1
+ <template>
2
+ <section class="datastore-type">
3
+ <div class="datastore-type__radio-container flex flex-col gap-3">
4
+ <ui-radio
5
+ v-for="(option, key) in backupTypes"
6
+ :key="key"
7
+ v-model="model.restore_code"
8
+ :label="option.text"
9
+ :test-id="option.testId"
10
+ :value="option.value"
11
+ size="md"
12
+ >
13
+ <template #description>
14
+ <span class="datastore-type__radio-description">
15
+ {{ optionsDescription[option.value - 1] }}
16
+ </span>
17
+ </template>
18
+ </ui-radio>
19
+ </div>
20
+ </section>
21
+ </template>
22
+
23
+ <script lang="ts" setup>
24
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
25
+ import { backupsTypesFunc } from '~/components/common/pages/backups/modals/restore/types/lib/config/typeOptions'
26
+ import type { UI_I_RestoreForm } from '~/components/common/pages/backups/modals/lib/models/interfaces'
27
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
28
+
29
+ const model = defineModel<UI_I_RestoreForm>({ required: true })
30
+
31
+ const localization = computed<UI_I_Localization>(() => useLocal())
32
+
33
+ const backupTypes = ref<UI_I_OptionItem[]>(backupsTypesFunc(localization.value))
34
+
35
+ const optionsDescription = computed<string[]>(() => {
36
+ return [
37
+ localization.value.common.restoreDiskOnlyDescription,
38
+ localization.value.common.restoreExistingDescription,
39
+ localization.value.common.restoreAsNewDescription,
40
+ ]
41
+ })
42
+ </script>
43
+
44
+ <style lang="scss" scoped>
45
+ @import 'assets/scss/common/mixins.scss';
46
+
47
+ .datastore-type {
48
+ container-type: inline-size;
49
+ margin-top: 16px;
50
+
51
+ &__radio {
52
+ &-description {
53
+ color: #9da6ad;
54
+ line-height: 18px;
55
+ }
56
+
57
+ &-container {
58
+ :deep(.radio-label__text) {
59
+ padding-top: 1px;
60
+ }
61
+ }
62
+ }
63
+
64
+ :deep(input[type='radio']) {
65
+ & ~ .radio-label {
66
+ width: 100%;
67
+ height: 100%;
68
+ background-color: var(--select-bg);
69
+ border-radius: 8px;
70
+ padding: 12px;
71
+ box-shadow: inset 0 0 0 1px var(--line-color);
72
+ transition: box-shadow 0.1s ease-in-out;
73
+ }
74
+
75
+ &:not(:checked) {
76
+ & ~ .radio-label:hover {
77
+ box-shadow: inset 0 0 0 1px var(--select-border);
78
+ }
79
+ }
80
+
81
+ &:checked {
82
+ & ~ .radio-label {
83
+ background-color: var(--radio-btn-active-label-bg-color);
84
+ box-shadow: inset 0 0 0 1.5px var(--radio-btn-active-label-border-color);
85
+ }
86
+ }
87
+ }
88
+ }
89
+
90
+ @container (max-width:600px) {
91
+ .datastore-type__radio-container {
92
+ grid-template-columns: 1fr;
93
+ }
94
+ }
95
+ </style>