bfg-common 1.5.673 → 1.5.674

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 (125) 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/bottomPanel/BottomPanel.vue +80 -0
  18. package/components/common/layout/bottomPanel/New.vue +239 -0
  19. package/components/common/layout/bottomPanel/Old.vue +154 -0
  20. package/components/common/layout/bottomPanel/alarms/Alarms.vue +76 -0
  21. package/components/common/layout/bottomPanel/alarms/lib/models/interfaces.ts +23 -0
  22. package/components/common/layout/bottomPanel/alarms/new/New.vue +212 -0
  23. package/components/common/layout/bottomPanel/alarms/new/lib/config/config.ts +193 -0
  24. package/components/common/layout/bottomPanel/alarms/new/lib/models/enums.ts +10 -0
  25. package/components/common/layout/bottomPanel/alarms/new/lib/models/interfaces.ts +12 -0
  26. package/components/common/layout/bottomPanel/alarms/old/Old.vue +191 -0
  27. package/components/common/layout/bottomPanel/alarms/old/lib/config/alarmTables.ts +89 -0
  28. package/components/common/layout/bottomPanel/alarms/old/lib/config/tableKeys.ts +11 -0
  29. package/components/common/layout/bottomPanel/alarms/old/lib/models/types.ts +8 -0
  30. package/components/common/layout/bottomPanel/lib/config/statusFilter.ts +19 -0
  31. package/components/common/layout/bottomPanel/lib/models/types.ts +1 -0
  32. package/components/common/layout/bottomPanel/recentTasks/RecentTasks.vue +43 -0
  33. package/components/common/layout/bottomPanel/recentTasks/lib/models/interfaces.ts +14 -0
  34. package/components/common/layout/bottomPanel/recentTasks/new/New.vue +419 -0
  35. package/components/common/layout/bottomPanel/recentTasks/new/lib/config/config.ts +259 -0
  36. package/components/common/layout/bottomPanel/recentTasks/old/Old.vue +275 -0
  37. package/components/common/layout/bottomPanel/recentTasks/old/lib/config/recentTaskTable.ts +240 -0
  38. package/components/common/layout/bottomPanel/recentTasks/old/lib/config/tableKeys.ts +15 -0
  39. package/components/common/layout/bottomPanel/recentTasks/old/lib/models/types.ts +14 -0
  40. package/components/common/layout/theHeader/TheHeaderNew.vue +315 -315
  41. package/components/common/layout/theHeader/TheHeaderOld.vue +262 -262
  42. package/components/common/layout/theHeader/helpMenu/About.vue +79 -79
  43. package/components/common/layout/theHeader/helpMenu/aboutOld/AboutOld.vue +79 -79
  44. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePassword.vue +93 -93
  45. package/components/common/layout/theHeader/userMenu/modals/changePassword/New.vue +193 -193
  46. package/components/common/layout/theHeader/userMenu/modals/preferences/PreferencesOld.vue +144 -144
  47. package/components/common/layout/theHeader/userMenu/modals/preferences/lib/models/types.ts +7 -7
  48. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Old.vue +216 -216
  49. package/components/common/layout/theHeader/userMenu/modals/preferences/security/Security.vue +31 -31
  50. package/components/common/pages/backups/DetailView.vue +52 -52
  51. package/components/common/pages/backups/lib/models/interfaces.ts +36 -36
  52. package/components/common/pages/backups/modals/Modals.vue +243 -243
  53. package/components/common/pages/backups/modals/createBackup/configuration/maxBandwidth/lib/config/options.ts +6 -6
  54. package/components/common/pages/backups/modals/createBackup/lib/config/readyToCompleteOptions.ts +69 -69
  55. package/components/common/pages/backups/modals/lib/config/restore.ts +115 -115
  56. package/components/common/pages/backups/modals/lib/models/interfaces.ts +186 -186
  57. package/components/common/pages/backups/modals/restore/name/lib/models/interfaces.ts +6 -6
  58. package/components/common/pages/home/lib/models/interfaces.ts +48 -48
  59. package/components/common/pages/home/widgets/hosts/Hosts.vue +27 -27
  60. package/components/common/pages/home/widgets/hosts/lib/config/items.ts +23 -23
  61. package/components/common/pages/home/widgets/vms/VmsOld.vue +35 -35
  62. package/components/common/pages/home/widgets/vms/lib/config/items.ts +19 -19
  63. package/components/common/pages/scheduledTasks/lib/utils/utils.ts +84 -84
  64. package/components/common/qr/Qr.vue +57 -57
  65. package/components/common/readyToComplete/ReadyToComplete.vue +17 -17
  66. package/components/common/select/radio/RadioGroup.vue +137 -137
  67. package/components/common/spiceConsole/Drawer.vue +420 -420
  68. package/components/common/spiceConsole/SpiceConsole.vue +184 -184
  69. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  70. package/components/common/tools/Actions.vue +207 -207
  71. package/components/common/treeView/TreeView.vue +52 -52
  72. package/components/common/vm/actions/clone/lib/config/steps.ts +295 -295
  73. package/components/common/vm/actions/clone/new/New.vue +438 -438
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +698 -698
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/shares/lib/config/options.ts +28 -28
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/memory/Memory.vue +283 -283
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +489 -489
  78. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +156 -156
  79. package/components/common/vm/actions/common/select/compatibility/Old.vue +107 -107
  80. package/components/common/vm/actions/common/select/createType/lib/models/interfaces.ts +5 -5
  81. package/components/common/vm/actions/common/select/options/New.vue +264 -264
  82. package/components/common/vm/actions/common/select/options/Old.vue +110 -110
  83. package/components/common/vm/actions/common/select/options/Options.vue +58 -58
  84. package/components/common/vm/actions/common/select/storage/Old.vue +125 -125
  85. package/components/common/vm/actions/common/select/storage/new/New.vue +311 -311
  86. package/components/common/vm/actions/common/select/storage/new/lib/models/interfaces.ts +5 -5
  87. package/components/common/vm/actions/common/select/storage/new/lib/utils/utils.ts +21 -21
  88. package/components/common/vm/actions/common/select/template/old/Old.vue +50 -50
  89. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  90. package/components/common/wizards/common/compatibility/Compatibility.vue +35 -35
  91. package/components/common/wizards/common/compatibility/New.vue +99 -99
  92. package/components/common/wizards/common/compatibility/Old.vue +53 -53
  93. package/components/common/wizards/common/steps/computeResource/New.vue +93 -93
  94. package/components/common/wizards/common/steps/name/Name.vue +178 -178
  95. package/components/common/wizards/common/steps/name/New.vue +221 -221
  96. package/components/common/wizards/common/steps/name/Old.vue +121 -121
  97. package/components/common/wizards/common/steps/name/lib/models/interfaces.ts +4 -4
  98. package/components/common/wizards/common/steps/name/location/New.vue +40 -40
  99. package/components/common/wizards/datastore/add/Add.vue +228 -228
  100. package/components/common/wizards/datastore/add/lib/utils.ts +85 -85
  101. package/components/common/wizards/datastore/add/steps/typeMode/lib/config/typeOptions.ts +43 -43
  102. package/composables/useAppVersion.ts +21 -21
  103. package/composables/useEnvLanguage.ts +22 -22
  104. package/composables/useLocal.ts +6 -6
  105. package/composables/useLocalCommon.ts +39 -39
  106. package/lib/models/enums.ts +65 -1
  107. package/package.json +1 -1
  108. package/plugins/console.ts +21 -21
  109. package/plugins/mouse.ts +21 -21
  110. package/plugins/panelStates.ts +70 -70
  111. package/plugins/text.ts +59 -59
  112. package/public/spice-console/application/clientgui.js +854 -854
  113. package/public/spice-console/application/packetfactory.js +211 -211
  114. package/public/spice-console/application/virtualmouse.js +147 -147
  115. package/public/spice-console/lib/images/bitmap.js +203 -203
  116. package/public/spice-console/network/spicechannel.js +440 -440
  117. package/public/spice-console/process/cursorprocess.js +128 -128
  118. package/public/spice-console/process/inputprocess.js +227 -227
  119. package/public/spice-console/process/mainprocess.js +212 -212
  120. package/public/spice-console/run.js +210 -210
  121. package/store/main/mutations.ts +7 -7
  122. package/store/main/state.ts +7 -7
  123. package/store/tasks/actions.ts +165 -165
  124. package/store/tasks/mappers/recentTasks.ts +123 -123
  125. package/store/tasks/mutations.ts +82 -82
@@ -0,0 +1,11 @@
1
+ import type { UI_T_AlarmsTableKeys } from '~/components/common/layout/bottomPanel/alarms/old/lib/models/types'
2
+
3
+ export const alarmsTableKeys: UI_T_AlarmsTableKeys[] = [
4
+ 'object',
5
+ 'status',
6
+ 'name',
7
+ 'triggered',
8
+ 'acknowledged',
9
+ 'acknowledged_by',
10
+ 'triggering_event',
11
+ ]
@@ -0,0 +1,8 @@
1
+ export type UI_T_AlarmsTableKeys =
2
+ | 'object'
3
+ | 'status'
4
+ | 'name'
5
+ | 'triggered'
6
+ | 'acknowledged'
7
+ | 'acknowledged_by'
8
+ | 'triggering_event'
@@ -0,0 +1,19 @@
1
+ import type { UI_I_Dropdown } from '~/node_modules/bfg-uikit/components/ui/dropdown/models/interfaces'
2
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
3
+
4
+ export const statusFilterItemsFunc = (
5
+ localization: UI_I_Localization
6
+ ): UI_I_Dropdown[] => [
7
+ {
8
+ text: localization.common.all,
9
+ value: -1,
10
+ },
11
+ {
12
+ text: localization.common.running,
13
+ value: 1,
14
+ },
15
+ {
16
+ text: localization.common.failed,
17
+ value: 3,
18
+ },
19
+ ]
@@ -0,0 +1 @@
1
+ export type UI_T_BottomPanelTabType = 'recentTask' | 'alarms'
@@ -0,0 +1,43 @@
1
+ <template>
2
+ <component
3
+ :is="currentComponent"
4
+ :data-table="props.dataTable"
5
+ :total-items="props.totalItems"
6
+ :total-pages="props.totalPages"
7
+ :pagination="props.pagination"
8
+ :loading="props.loading"
9
+ @pagination="emits('pagination', $event)"
10
+ @sort="emits('sort', $event)"
11
+ />
12
+ </template>
13
+
14
+ <script setup lang="ts">
15
+ import type { UI_I_RecentTaskItem } from '~/lib/models/store/tasks/interfaces'
16
+ import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
17
+ import type { UI_T_NodeType } from '~/components/common/pages/home/lib/models/types'
18
+
19
+ const props = defineProps<{
20
+ dataTable: UI_I_RecentTaskItem<UI_T_NodeType>[]
21
+ totalItems: number
22
+ totalPages: number
23
+ pagination: UI_I_Pagination
24
+ loading: boolean
25
+ }>()
26
+
27
+ const emits = defineEmits<{
28
+ (event: 'pagination', value: UI_I_Pagination | null): void
29
+ (event: 'sort', value: string): void
30
+ }>()
31
+
32
+ const { $store }: any = useNuxtApp()
33
+
34
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
35
+
36
+ const currentComponent = computed(() =>
37
+ isNewView.value
38
+ ? defineAsyncComponent(() => import('./new/New.vue'))
39
+ : defineAsyncComponent(() => import('./old/Old.vue'))
40
+ )
41
+ </script>
42
+
43
+ <style scoped lang="scss"></style>
@@ -0,0 +1,14 @@
1
+ import type { UI_T_NodeType } from '~/components/common/pages/home/lib/models/types'
2
+ import type { UI_T_NavNodes } from '~/lib/models/types'
3
+
4
+ interface UI_I_TargetData {
5
+ id: string
6
+ type: UI_T_NodeType
7
+ }
8
+
9
+ export interface UI_I_DataTargetForTable extends UI_I_TargetData {
10
+ nav: UI_T_NavNodes
11
+ isLink: boolean
12
+ iconClassName: string
13
+ testId?: string
14
+ }
@@ -0,0 +1,419 @@
1
+ <template>
2
+ <ui-data-table
3
+ :data="data"
4
+ :options="options"
5
+ :loading="props.loading"
6
+ test-id="resent-task-table"
7
+ @sort="onSort"
8
+ >
9
+ <template #icon="{ item }">
10
+ <span class="flex-align-center">
11
+ <span :class="['icon', item.data.icon]" />
12
+
13
+ <span
14
+ :data-id="`rtask-${item.data.testId}`"
15
+ :class="item.data.isLink && 'target-link'"
16
+ @click="onSelectNodeOfTree(item.data)"
17
+ >
18
+ {{ item.text }}
19
+ </span>
20
+ </span>
21
+ </template>
22
+
23
+ <template #status="{ item }">
24
+ <ui-chip :test-id="item.data.testId" :color="item.data.chipColor" rounded>
25
+ <ui-icon
26
+ :name="item.data.icon"
27
+ width="14px"
28
+ height="14px"
29
+ class="chip-icon"
30
+ ></ui-icon>
31
+ {{ item.text }}
32
+ </ui-chip>
33
+
34
+ <div v-if="item.data.operations.length" class="ml-2">
35
+ <common-tooltip-help
36
+ :test-id="item.data.index + '-operations'"
37
+ :help-id="item.data.index + '-operations-icon'"
38
+ :title="localization.tasks.vmUpdateSteps"
39
+ :help-text="item.data.error"
40
+ status="info"
41
+ @toggle-show="onToggleOperationsTooltip"
42
+ >
43
+ <template #default>
44
+ <div class="operations-container">
45
+ <div
46
+ v-for="(item2, key2) in item.data.operations"
47
+ :key="key2"
48
+ :data-id="item2.testId"
49
+ class="status-detail-item flex flex-align-center"
50
+ >
51
+ <div class="left-block">
52
+ <ui-icon
53
+ :name="item2.iconClassName"
54
+ class="status-detail-item__icon"
55
+ width="16"
56
+ height="16"
57
+ />
58
+ <span class="text-ellipsis">{{ item2.operation_type }}:</span>
59
+ </div>
60
+ <div class="right-block text-ellipsis">
61
+ <span
62
+ :title="item2.message"
63
+ class="status-detail-item-message text-ellipsis text-3 font-[500]"
64
+ >{{ item2.message || '--' }}</span
65
+ >
66
+ <ui-icon
67
+ name="arrow"
68
+ width="16"
69
+ height="16"
70
+ class="toggle-text-icon pointer"
71
+ :data-id="`toggle-text-icon-${key2}`"
72
+ @click="onToggleLongText(key2)"
73
+ />
74
+ </div>
75
+ </div>
76
+ <div class="bottom-info-block">
77
+ <span class="completed-text"
78
+ >{{
79
+ item.data.operations.length -
80
+ item.data.failedOperationsCount
81
+ }}
82
+ {{ localization.common.of }}
83
+ {{ item.data.operations.length }}
84
+ {{ localization.common.completed }}</span
85
+ >
86
+ <span
87
+ :class="[
88
+ 'failed-text',
89
+ { error: item.data.failedOperationsCount },
90
+ ]"
91
+ >{{ item.data.failedOperationsCount }}
92
+ {{ localization.common.failed }}</span
93
+ >
94
+ </div>
95
+ </div>
96
+ </template>
97
+ </common-tooltip-help>
98
+ </div>
99
+
100
+ <div v-if="item.data.error" class="ml-2">
101
+ <common-tooltip-help
102
+ :test-id="`${item.data.index}`"
103
+ :help-id="item.data.index + 'icon'"
104
+ :title="localization.common.failureReason"
105
+ :help-text="item.data.error"
106
+ dropdown-width="max-content"
107
+ dropdown-max-width="480px"
108
+ dropdown-max-height="200px"
109
+ status="error"
110
+ dropdown-top
111
+ dropdown-left
112
+ />
113
+ </div>
114
+ </template>
115
+
116
+ <template #default-actions="{ item }">
117
+ <div class="actions w-full">
118
+ <ui-button
119
+ :test-id="`resent-task-item-${item.data.id}-action`"
120
+ variant="text"
121
+ is-without-height
122
+ is-without-sizes
123
+ @click="onToggleActions(item.data.id)"
124
+ >
125
+ <span
126
+ :class="['action-icon', { active: actionsIsShow[item.data.id] }]"
127
+ >
128
+ <ui-icon name="vertical-dotes" width="20" height="20" />
129
+ </span>
130
+ </ui-button>
131
+ <ui-dropdown
132
+ :show="actionsIsShow[item.data.id] || false"
133
+ :test-id="`resent-task-item-action-${item.data.id}`"
134
+ :items="actions"
135
+ :elem-id="`resent-task-item-${item.data.id}-action`"
136
+ width="max-content"
137
+ left
138
+ @select="onSelectAction(item.data.target, $event, item.data.id)"
139
+ @hide="onHideActionsDropdown(item.data.id)"
140
+ >
141
+ <template #row="{ item: dropMenu }">
142
+ <ui-icon
143
+ v-if="dropMenu.iconName === 'hide'"
144
+ name="password-hide"
145
+ width="16"
146
+ height="16"
147
+ />
148
+ <span class="action-text">
149
+ {{ dropMenu.text }}
150
+ </span>
151
+ </template>
152
+ </ui-dropdown>
153
+ </div>
154
+ </template>
155
+ </ui-data-table>
156
+ </template>
157
+
158
+ <script setup lang="ts">
159
+ import type { UI_I_Dropdown } from '~/node_modules/bfg-uikit/components/ui/dropdown/models/interfaces'
160
+ import type {
161
+ UI_I_DataTable,
162
+ UI_I_DataTableHeader,
163
+ UI_I_DataTableBody,
164
+ } from '~/node_modules/bfg-uikit/components/ui/dataTable/models/interfaces'
165
+ import type { UI_I_Pagination } from '~/lib/models/table/interfaces'
166
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
167
+ import type { UI_I_RecentTaskItem } from '~/lib/models/store/tasks/interfaces'
168
+ import type { UI_I_DataTargetForTable } from '~/components/common/layout/bottomPanel/recentTasks/lib/models/interfaces'
169
+ import type { UI_T_NodeType } from '~/components/common/pages/home/lib/models/types'
170
+ import {
171
+ options,
172
+ getHeaderDataFunc,
173
+ getBodyDataFunc,
174
+ } from '~/components/common/layout/bottomPanel/recentTasks/new/lib/config/config'
175
+
176
+ const props = defineProps<{
177
+ dataTable: UI_I_RecentTaskItem<UI_T_NodeType>[]
178
+ loading: boolean
179
+ pagination: UI_I_Pagination // Для Warning props
180
+ }>()
181
+ const emits = defineEmits<{
182
+ (event: 'sort', value: string): void
183
+ }>()
184
+
185
+ const localization = computed<UI_I_Localization>(() => useLocal())
186
+ const { $store }: any = useNuxtApp()
187
+
188
+ const actionsIsShow = ref<boolean[]>([])
189
+
190
+ const data = computed<UI_I_DataTable>(() => ({
191
+ id: 'resent-task-table',
192
+ header: resentTaskHeadItems.value,
193
+ body: resentTaskBodyItems.value,
194
+ }))
195
+
196
+ const resentTaskHeadItems = computed<UI_I_DataTableHeader[]>(() =>
197
+ getHeaderDataFunc(localization.value)
198
+ )
199
+
200
+ const resentTaskBodyItems = ref<UI_I_DataTableBody[]>([])
201
+ watch(
202
+ () => props.dataTable,
203
+ (newValue) => {
204
+ if (!newValue?.length) {
205
+ resentTaskBodyItems.value = []
206
+ return
207
+ }
208
+
209
+ resentTaskBodyItems.value = getBodyDataFunc(newValue, localization.value)
210
+ },
211
+ { deep: true, immediate: true }
212
+ )
213
+ const onSort = (value: string): void => {
214
+ emits('sort', value)
215
+ }
216
+
217
+ const actions = computed<UI_I_Dropdown[]>(() => [
218
+ {
219
+ value: 'view',
220
+ text: localization.value.common.viewTarget,
221
+ iconName: 'hide',
222
+ selected: false,
223
+ },
224
+ ])
225
+ const onToggleActions = (id: number): void => {
226
+ actionsIsShow.value[id] = !actionsIsShow.value[id]
227
+ }
228
+ const onSelectAction = (
229
+ data: UI_I_DataTargetForTable,
230
+ action: 'view',
231
+ actionId: number
232
+ ): void => {
233
+ switch (action) {
234
+ case 'view':
235
+ onSelectNodeOfTree(data)
236
+ break
237
+ }
238
+ onHideActionsDropdown(actionId)
239
+ }
240
+ const onHideActionsDropdown = (id: number): void => {
241
+ actionsIsShow.value[id] = false
242
+ }
243
+
244
+ const onSelectNodeOfTree = (data: UI_I_DataTargetForTable): void => {
245
+ if (!data.isLink) return
246
+
247
+ const { type, id, nav } = data
248
+
249
+ const node = {
250
+ id,
251
+ type,
252
+ }
253
+
254
+ const path = `/inventory/type=${type};nav=${nav};id=${id}/summary`
255
+ navigateTo(path)
256
+
257
+ $store.dispatch('inventory/A_SELECT_NODE', { node, type })
258
+ }
259
+
260
+ const onToggleOperationsTooltip = (): void => {
261
+ setTimeout(() => {
262
+ document.querySelectorAll('.status-detail-item').forEach((item) => {
263
+ const messageItem = item.querySelector('.status-detail-item-message')
264
+
265
+ if (!messageItem) return
266
+
267
+ const isEllipsisActive = messageItem.scrollWidth > messageItem.clientWidth
268
+
269
+ isEllipsisActive &&
270
+ item.querySelector('.right-block')?.classList.toggle('active')
271
+ })
272
+ }, 0)
273
+ }
274
+ const onToggleLongText = (index: number): void => {
275
+ document
276
+ .querySelectorAll('.status-detail-item')
277
+ [index].querySelectorAll('.right-block')[0]
278
+ .classList.toggle('show-full')
279
+ }
280
+ </script>
281
+
282
+ <style>
283
+ /*TODO move up*/
284
+ :root {
285
+ --actions-icon-color: #4d5d69;
286
+ --actions-icon-hover-color: #213444;
287
+ --actions-icon-icative-color: #008fd6;
288
+ --status-operations-container-border: #e9ebeda3;
289
+ --status-operations-container-completed-info-text: #4d5d69;
290
+ --status-operations-container-failed-error-text: #ea3223;
291
+ }
292
+ :root.dark-theme {
293
+ --actions-icon-color: #e9eaec;
294
+ --actions-icon-hover-color: #ffffff;
295
+ --actions-icon-icative-color: #2ba2de;
296
+ --status-operations-container-border: #e9ebed1f;
297
+ --status-operations-container-completed-info-text: #e9eaec;
298
+ --status-operations-container-failed-error-text: #ec4235;
299
+ }
300
+ </style>
301
+ <style scoped lang="scss">
302
+ .resent-task-table {
303
+ height: inherit;
304
+
305
+ .target-link {
306
+ font-family: 'Inter', sans-serif;
307
+ font-size: 13px;
308
+ color: var(--bottom-pannel-rtask-link-text);
309
+ font-weight: 400;
310
+ line-height: 15.73px;
311
+ cursor: pointer;
312
+ &:hover {
313
+ color: var(--bottom-pannel-rtask-link-hover-text);
314
+ }
315
+ }
316
+ .chip-icon {
317
+ min-width: 14px;
318
+ //margin-right: 6px;
319
+ }
320
+ .icon {
321
+ margin-right: 4px;
322
+ }
323
+
324
+ .actions {
325
+ .action-icon {
326
+ width: 16px;
327
+ height: 16px;
328
+ color: var(--actions-icon-color);
329
+
330
+ &:hover {
331
+ color: var(--actions-icon-hover-color);
332
+ }
333
+ &.active {
334
+ color: var(--actions-icon-icative-color);
335
+ }
336
+ }
337
+
338
+ .action-text {
339
+ margin-left: 8px;
340
+ }
341
+ }
342
+
343
+ .operations-container {
344
+ max-width: 448px;
345
+ min-width: 288px;
346
+ padding-top: 16px;
347
+ border-top: 1px solid var(--status-operations-container-border);
348
+ display: grid;
349
+ grid-row-gap: 20px;
350
+
351
+ .status-detail-item {
352
+ display: grid;
353
+ grid-template-columns: 50% 50%;
354
+
355
+ .left-block {
356
+ display: flex;
357
+ align-items: center;
358
+ grid-gap: 8px;
359
+ padding-right: 24px;
360
+ }
361
+ .right-block {
362
+ display: grid;
363
+ align-items: flex-start;
364
+
365
+ &.active {
366
+ grid-template-columns: 1fr max-content;
367
+ grid-column-gap: 8px;
368
+
369
+ .toggle-text-icon {
370
+ display: unset;
371
+ }
372
+ }
373
+ &.show-full {
374
+ .status-detail-item-message {
375
+ white-space: break-spaces;
376
+ }
377
+ .toggle-text-icon {
378
+ transform: rotate(0deg);
379
+ }
380
+ }
381
+
382
+ .status-detail-item-message {
383
+ color: #9da6ad;
384
+ }
385
+ .toggle-text-icon {
386
+ transform: rotate(180deg);
387
+ display: none;
388
+ }
389
+ }
390
+
391
+ &__icon {
392
+ min-width: 16px;
393
+ color: #ea3223;
394
+ :deep(path) {
395
+ fill-opacity: 1;
396
+ }
397
+ }
398
+ }
399
+ .bottom-info-block {
400
+ display: flex;
401
+ justify-content: space-between;
402
+ padding-top: 16px;
403
+ border-top: 1px solid var(--status-operations-container-border);
404
+
405
+ .completed-text {
406
+ font-weight: 500;
407
+ color: var(--status-operations-container-completed-info-text);
408
+ }
409
+ .failed-text {
410
+ color: #9da6ad;
411
+
412
+ &.error {
413
+ color: var(--status-operations-container-failed-error-text);
414
+ }
415
+ }
416
+ }
417
+ }
418
+ }
419
+ </style>