bfg-common 1.4.799 → 1.4.801

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 (157) hide show
  1. package/assets/img/icons/icons-sprite-dark-1.svg +31 -14
  2. package/assets/img/icons/icons-sprite-dark-3.svg +227 -227
  3. package/assets/img/icons/icons-sprite-dark-4.svg +6 -1
  4. package/assets/img/icons/icons-sprite-dark-5.svg +488 -488
  5. package/assets/img/icons/icons-sprite-light-1.svg +30 -13
  6. package/assets/img/icons/icons-sprite-light-3.svg +227 -227
  7. package/assets/img/icons/icons-sprite-light-4.svg +6 -1
  8. package/assets/img/icons/icons-sprite-light-5.svg +488 -488
  9. package/assets/localization/local_be.json +33 -8
  10. package/assets/localization/local_en.json +33 -8
  11. package/assets/localization/local_hy.json +33 -8
  12. package/assets/localization/local_kk.json +34 -9
  13. package/assets/localization/local_ru.json +43 -18
  14. package/assets/localization/local_zh.json +33 -8
  15. package/assets/scss/clarity/local_ar.json +6 -3
  16. package/assets/scss/common/icons/icons-1.scss +4 -4
  17. package/components/atoms/autocomplete/Autocomplete.vue +68 -12
  18. package/components/atoms/select/TheSelect.vue +10 -1
  19. package/components/atoms/table/dataGrid/DataGrid.vue +12 -4
  20. package/components/atoms/table/dataGrid/lib/config/settingsTable.ts +4 -1
  21. package/components/atoms/table/dataGrid/lib/utils/export.ts +13 -13
  22. package/components/atoms/tabs/VerticalTabs.vue +11 -6
  23. package/components/common/browse/blocks/lib/models/types.ts +1 -1
  24. package/components/common/browse/lib/models/interfaces.ts +5 -5
  25. package/components/common/chartOptionsModal/counters/timespan/form/Form.vue +544 -544
  26. package/components/common/chartOptionsModal/counters/timespan/form/lib/config/dateForm.ts +116 -116
  27. package/components/common/context/Context.vue +16 -4
  28. package/components/common/context/recursion/Recursion.vue +2 -1
  29. package/components/common/context/recursion/RecursionNew.vue +57 -31
  30. package/components/common/context/recursion/RecursionOld.vue +33 -19
  31. package/components/common/diagramMain/Header.vue +211 -211
  32. package/components/common/diagramMain/adapter/AdapterItems.vue +61 -61
  33. package/components/common/diagramMain/lib/config/initial.ts +50 -50
  34. package/components/common/diagramMain/lib/models/types.ts +21 -21
  35. package/components/common/diagramMain/lib/utils/utils.ts +331 -331
  36. package/components/common/diagramMain/modals/ManagePhysicalAdaptersModal.vue +330 -330
  37. package/components/common/diagramMain/modals/editSettings/ConfirmTeamingSettingsModal.vue +40 -40
  38. package/components/common/diagramMain/modals/editSettings/EditSettings.vue +497 -497
  39. package/components/common/diagramMain/modals/editSettings/EditSettingsModal.vue +812 -812
  40. package/components/common/diagramMain/modals/editSettings/tabs/NetworkProperties.vue +214 -214
  41. package/components/common/diagramMain/modals/editSettings/tabs/Security.vue +189 -189
  42. package/components/common/diagramMain/modals/editSettings/tabs/SwitchProperties.vue +163 -163
  43. package/components/common/diagramMain/modals/editSettings/tabs/TeamingFailover.vue +175 -175
  44. package/components/common/diagramMain/modals/editSettings/tabs/TrafficShaping.vue +7 -7
  45. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +346 -346
  46. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +205 -205
  47. package/components/common/diagramMain/modals/lib/config/diagramConfig.ts +23 -23
  48. package/components/common/diagramMain/modals/lib/config/initial.ts +180 -180
  49. package/components/common/diagramMain/modals/lib/config/vmKernelAdapter.ts +90 -90
  50. package/components/common/diagramMain/modals/lib/mappers/mappers.ts +87 -87
  51. package/components/common/diagramMain/modals/lib/utils/index.ts +24 -24
  52. package/components/common/diagramMain/modals/migrateVmkernelAdapter/lib/config/steps.ts +114 -114
  53. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/ConnectionSettings.vue +169 -169
  54. package/components/common/diagramMain/modals/migrateVmkernelAdapter/steps/SelectVmkernelAdapter.vue +159 -159
  55. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/common.ts +14 -14
  56. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/connectionSettings.ts +137 -137
  57. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/selectVmkernelAdapter.ts +52 -52
  58. package/components/common/diagramMain/modals/migrateVmkernelAdapter/validations/validations.ts +19 -19
  59. package/components/common/diagramMain/port/Ports.vue +47 -47
  60. package/components/common/feedback/Buttons.vue +2 -2
  61. package/components/common/feedback/Message.vue +1 -0
  62. package/components/common/feedback/VisitPortal.vue +5 -1
  63. package/components/common/graph/Graph.vue +5 -11
  64. package/components/common/graph/GraphNew.vue +71 -0
  65. package/components/common/graph/GraphOld.vue +31 -0
  66. package/components/common/layout/theHeader/feedback/new/New.vue +29 -14
  67. package/components/common/layout/theHeader/feedback/new/additionalDetails/AdditionalDetails.vue +34 -9
  68. package/components/common/layout/theHeader/feedback/new/additionalDetails/Headline.vue +17 -6
  69. package/components/common/layout/theHeader/feedback/new/description/Description.vue +1 -0
  70. package/components/common/layout/theHeader/feedback/new/email/Email.vue +1 -1
  71. package/components/common/layout/theHeader/feedback/new/subtitle/Subtitle.vue +22 -6
  72. package/components/common/layout/theHeader/feedback/new/tabs/Tabs.vue +17 -15
  73. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePasswordNew.vue +1 -1
  74. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +3 -2
  75. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +1 -1
  76. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +1 -1
  77. package/components/common/monitor/advanced/tools/chartOptionsModal/Notification.vue +7 -7
  78. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/Timespan.vue +95 -95
  79. package/components/common/monitor/overview/Overview.vue +14 -28
  80. package/components/common/monitor/overview/OverviewNew.vue +138 -0
  81. package/components/common/monitor/overview/OverviewOld.vue +137 -0
  82. package/components/common/monitor/overview/filters/Filters.vue +35 -103
  83. package/components/common/monitor/overview/filters/FiltersNew.vue +122 -0
  84. package/components/common/monitor/overview/filters/FiltersOld.vue +151 -0
  85. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +1 -1
  86. package/components/common/pages/hardwareHealth/historyTestimony/Graph.vue +463 -456
  87. package/components/common/pages/hardwareHealth/historyTestimony/tools/Tools.vue +389 -387
  88. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/ChartOptionsModal.vue +8 -0
  89. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/counters/Counters.vue +94 -94
  90. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/counters/timespan/Timespan.vue +66 -66
  91. package/components/common/pages/home/headline/Headline.vue +3 -2
  92. package/components/common/pages/home/headline/HeadlineNew.vue +1 -1
  93. package/components/common/pages/home/headline/HeadlineOld.vue +5 -0
  94. package/components/common/pages/home/widgets/vms/VmsNew.vue +1 -1
  95. package/components/common/pages/packages/Packages.vue +208 -0
  96. package/components/common/pages/packages/lib/config/actions.ts +59 -0
  97. package/components/common/pages/packages/lib/models/types.ts +8 -0
  98. package/components/common/pages/packages/tableView/TableView.vue +120 -0
  99. package/components/common/pages/packages/tableView/lib/config/configTable.ts +136 -0
  100. package/components/common/pages/packages/tableView/lib/config/tableKey.ts +14 -0
  101. package/components/common/pages/packages/tableView/lib/models/types.ts +12 -0
  102. package/components/common/pages/shortcuts/Shortcuts.vue +1 -1
  103. package/components/common/pages/tasks/Tasks.vue +23 -8
  104. package/components/common/pages/tasks/table/Table.vue +66 -16
  105. package/components/common/pages/tasks/table/errorInfo/ErrorInfo.vue +27 -10
  106. package/components/common/pages/tasks/table/expandDetails/ExpandDetails.vue +28 -12
  107. package/components/common/pages/tasks/table/lib/config/config.ts +11 -11
  108. package/components/common/portlets/customAttributes/Portlet.vue +4 -4
  109. package/components/common/portlets/tag/TagAddNew.vue +4 -4
  110. package/components/common/select/radio/RadioGroup.vue +3 -3
  111. package/components/common/selectLanguage/SelectLanguage.vue +29 -25
  112. package/components/common/selectLanguage/lib/config/config.ts +1 -0
  113. package/components/common/split/horizontal/HorizontalNew.vue +42 -24
  114. package/components/common/split/horizontal/HorizontalOld.vue +43 -13
  115. package/components/common/vm/actions/add/Add.vue +6 -1
  116. package/components/common/vm/actions/clone/Clone.vue +8 -3
  117. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +4 -0
  118. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +6 -4
  119. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +26 -10
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +12 -4
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +6 -3
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +4 -2
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +6 -4
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +9 -3
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +3 -2
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +3 -2
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +87 -24
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceNew.vue +14 -8
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +9 -7
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIo.vue +0 -4
  131. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +43 -12
  132. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +50 -25
  133. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +5 -7
  134. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +64 -28
  135. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +60 -19
  136. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/lib/config/options.ts +11 -4
  137. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +16 -1
  138. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +59 -8
  139. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +60 -7
  140. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +1 -1
  141. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionOld.vue +1 -1
  142. package/components/common/vm/actions/common/lib/config/capabilities.ts +1 -1
  143. package/components/common/vm/actions/editSettings/EditSettings.vue +4 -0
  144. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +2 -0
  145. package/components/common/vm/actions/editSettings/new/New.vue +2 -0
  146. package/components/common/wizards/datastore/add/Add.vue +4 -4
  147. package/components/common/wizards/datastore/add/lib/config/steps.ts +14 -14
  148. package/components/common/wizards/datastore/add/lib/validations.ts +9 -9
  149. package/components/common/wizards/datastore/add/nfs/Nfs.vue +6 -9
  150. package/components/common/wizards/vm/migrate/Migrate.vue +12 -12
  151. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +1 -1
  152. package/composables/useLocal.ts +3 -1
  153. package/composables/useLocalStorage.ts +1 -1
  154. package/lib/models/store/vm/interfaces.ts +11 -0
  155. package/lib/models/table/interfaces.ts +1 -0
  156. package/package.json +3 -3
  157. package/store/tasks/actions.ts +2 -1
@@ -18,12 +18,13 @@
18
18
  <ui-chip
19
19
  :test-id="normalizedTaskDetails[2].data.testId"
20
20
  :color="normalizedTaskDetails[2].data.chipColor"
21
+ size="sm"
21
22
  rounded
22
23
  >
23
24
  <ui-icon
24
25
  :name="normalizedTaskDetails[2].data.icon"
25
- width="14px"
26
- height="14px"
26
+ width="12px"
27
+ height="12px"
27
28
  class="chip-icon"
28
29
  ></ui-icon>
29
30
  {{ normalizedTaskDetails[2].text }}
@@ -31,8 +32,10 @@
31
32
 
32
33
  <common-pages-tasks-table-error-info
33
34
  v-if="normalizedTaskDetails[2].data.error"
34
- :id="normalizedTaskDetails[2].testId"
35
+ :id="`${normalizedTaskDetails[2].data.testId}-expand-details`"
35
36
  :error="normalizedTaskDetails[2].data.error"
37
+ :opened-error="openedError"
38
+ @toggle-error="onToggleError"
36
39
  />
37
40
  </span>
38
41
  </div>
@@ -72,7 +75,7 @@
72
75
  </div>
73
76
 
74
77
  <div class="expand-details__row">
75
- <span class="expand-details__label">
78
+ <span class="expand-details__label events">
76
79
  {{ localization.common.relatedEvents }}:
77
80
  </span>
78
81
  <span class="expand-details__value disabled">
@@ -99,6 +102,16 @@ const normalizedTaskDetails = computed<UI_I_DataTableBodyData[]>(() => {
99
102
  ) // Фильтр по номерам колонок
100
103
  })
101
104
 
105
+ const openedError = ref<string>('')
106
+
107
+ const onToggleError = (value: string): void => {
108
+ if (!value || value === openedError.value) {
109
+ openedError.value = ''
110
+ } else {
111
+ openedError.value = value
112
+ }
113
+ }
114
+
102
115
  const onSelectNodeOfTree = (data: any): void => {
103
116
  if (!data.isLink) return
104
117
 
@@ -126,15 +139,22 @@ const onSelectNodeOfTree = (data: any): void => {
126
139
  line-height: 14.52px;
127
140
  }
128
141
  .expand-details {
142
+ display: grid;
143
+ grid-template-columns: auto 1fr;
144
+ column-gap: 24px;
145
+ row-gap: 12px;
129
146
  &__row {
130
- display: grid;
131
- grid-template-columns: 110px 1fr;
132
- column-gap: 12px;
133
- margin-bottom: 8px;
147
+ display: contents;
148
+ height: 18px;
134
149
  }
135
150
  &__label {
136
151
  @extend %properties;
137
152
  color: #9da6ad;
153
+ text-transform: capitalize;
154
+
155
+ &.events {
156
+ height: 18px;
157
+ }
138
158
  }
139
159
  &__value {
140
160
  @extend %properties;
@@ -158,10 +178,6 @@ const onSelectNodeOfTree = (data: any): void => {
158
178
  @include flex($align: center);
159
179
  .ui-chip {
160
180
  width: max-content;
161
- :deep(.ui-chip__label) {
162
- // TODO надо удалить потом (clr style)
163
- grid-gap: 4px;
164
- }
165
181
  }
166
182
  }
167
183
  }
@@ -24,8 +24,7 @@ export const getHeaderDataFunc = (
24
24
  text: localization.tasks.taskName,
25
25
  isSortable: true,
26
26
  sort: 'asc',
27
- sortColumn: true,
28
- width: '180px',
27
+ width: '248px',
29
28
  show: true,
30
29
  filter: true,
31
30
  },
@@ -73,7 +72,7 @@ export const getHeaderDataFunc = (
73
72
  col: 'col5',
74
73
  colName: 'queued_for',
75
74
  text: localization.common.queuedFor,
76
- isSortable: true,
75
+ isSortable: false,
77
76
  sort: 'asc',
78
77
  width: '180px',
79
78
  show: true,
@@ -83,19 +82,19 @@ export const getHeaderDataFunc = (
83
82
  col: 'col6',
84
83
  colName: 'start_time',
85
84
  text: localization.common.startTime,
86
- isSortable: true,
85
+ isSortable: false,
87
86
  sort: 'asc',
88
- width: '180px',
87
+ width: '208px',
89
88
  show: true,
90
89
  filter: true,
91
90
  },
92
91
  {
93
92
  col: 'col7',
94
- colName: 'completion_time',
93
+ colName: 'completion',
95
94
  text: localization.common.completionTime,
96
95
  isSortable: true,
97
96
  sort: 'asc',
98
- width: '180px',
97
+ width: '208px',
99
98
  show: true,
100
99
  filter: true,
101
100
  },
@@ -103,7 +102,7 @@ export const getHeaderDataFunc = (
103
102
  col: 'col8',
104
103
  colName: 'execution_time',
105
104
  text: localization.common.executionTime,
106
- isSortable: true,
105
+ isSortable: false,
107
106
  sort: 'asc',
108
107
  width: '180px',
109
108
  show: true,
@@ -125,7 +124,7 @@ export const getHeaderDataFunc = (
125
124
  text: localization.common.zone,
126
125
  isSortable: true,
127
126
  sort: 'asc',
128
- width: '180px',
127
+ width: '144px',
129
128
  show: true,
130
129
  filter: true,
131
130
  },
@@ -175,7 +174,8 @@ export const options: UI_I_DataTableOptions = {
175
174
  showColumnManager: true,
176
175
  withActions: true,
177
176
  inBlock: true,
178
- showExport: true
177
+ showExport: true,
178
+ withCollapse: true
179
179
  }
180
180
 
181
181
  export const getBodyDataFunc = (
@@ -203,7 +203,7 @@ export const getBodyDataFunc = (
203
203
  icon: UI_E_RTaskStatusIcon[task.status],
204
204
  chipColor: UI_E_RTaskChipColor[task.status],
205
205
  error: task.error,
206
- testId: `${task.taskName}-progress`,
206
+ testId: `${task.taskName}-${index}-status`,
207
207
  }
208
208
 
209
209
  const zoneNodeParams = taskConfig.zoneNodeFunc(task, nav)
@@ -455,7 +455,7 @@ const onTogglePortlet = (id: string): void => {
455
455
  --input-border: #d3d6da;
456
456
  --input-color: #4d5d69;
457
457
  --input-caret-color: #000000;
458
- --input-bg: #ffffff;
458
+ --input-bg-common: #ffffff;
459
459
  --hide-row-icon: #4d5d69;
460
460
  --hide-row-icon-hover: #213444;
461
461
  --create-row-icon: #008fd6;
@@ -466,7 +466,7 @@ const onTogglePortlet = (id: string): void => {
466
466
  --input-border: #e9ebed3d;
467
467
  --input-color: #d3d6da;
468
468
  --input-caret-color: #ffffff;
469
- --input-bg: transparent;
469
+ --input-bg-common: transparent;
470
470
  --hide-row-icon: #e9eaec;
471
471
  --hide-row-icon-hover: #ffffff;
472
472
  --create-row-icon: #2ba2de;
@@ -549,7 +549,7 @@ const onTogglePortlet = (id: string): void => {
549
549
 
550
550
  .table-input {
551
551
  height: 28px;
552
- background-color: var(--input-bg);
552
+ background-color: var(--input-bg-common);
553
553
  border: 1px solid var(--input-border);
554
554
  font-size: 12px;
555
555
  font-weight: 500;
@@ -580,7 +580,7 @@ const onTogglePortlet = (id: string): void => {
580
580
 
581
581
  :deep(.ui-select-toggle-button) {
582
582
  height: 28px;
583
- background-color: var(--input-bg);
583
+ background-color: var(--input-bg-common);
584
584
 
585
585
  &:disabled {
586
586
  background: var(--select-bg-disabled);
@@ -412,7 +412,7 @@ const onCreateCategory = (data: UI_I_CreateCategoryData): void => {
412
412
  --input-border: #d3d6da;
413
413
  --input-color: #4d5d69;
414
414
  --input-caret-color: #000000;
415
- --input-bg: #ffffff;
415
+ --input-bg-common: #ffffff;
416
416
  --hide-row-icon: #4d5d69;
417
417
  --hide-row-icon-hover: #213444;
418
418
  --create-row-icon: #008fd6;
@@ -423,7 +423,7 @@ const onCreateCategory = (data: UI_I_CreateCategoryData): void => {
423
423
  --input-border: #e9ebed3d;
424
424
  --input-color: #d3d6da;
425
425
  --input-caret-color: #ffffff;
426
- --input-bg: transparent;
426
+ --input-bg-common: transparent;
427
427
  --hide-row-icon: #e9eaec;
428
428
  --hide-row-icon-hover: #ffffff;
429
429
  --create-row-icon: #2ba2de;
@@ -512,7 +512,7 @@ const onCreateCategory = (data: UI_I_CreateCategoryData): void => {
512
512
 
513
513
  .table-input {
514
514
  height: 28px;
515
- background-color: var(--input-bg);
515
+ background-color: var(--input-bg-common);
516
516
  border: 1px solid var(--input-border);
517
517
  font-size: 12px;
518
518
  font-weight: 500;
@@ -543,7 +543,7 @@ const onCreateCategory = (data: UI_I_CreateCategoryData): void => {
543
543
 
544
544
  :deep(.ui-select-toggle-button) {
545
545
  height: 28px;
546
- background-color: var(--input-bg);
546
+ background-color: var(--input-bg-common);
547
547
  }
548
548
 
549
549
  :deep(.ui-placeholder) {
@@ -112,9 +112,9 @@ const selectedType = computed<string | number>({
112
112
  }
113
113
  .radio {
114
114
  margin-bottom: 5px;
115
- &:nth-child(2) {
116
- margin-top: 10px;
117
- }
115
+ //&:nth-child(2) {
116
+ //margin-top: 10px; // ?
117
+ //}
118
118
  &.disabled {
119
119
  opacity: 0.7;
120
120
  }
@@ -1,31 +1,31 @@
1
1
  <template>
2
2
  <div :class="['language-dropdown', props.size]">
3
3
  <ui-select
4
- v-model="selectedLang"
5
- test-id="select-language"
6
- :items="props.normalizeLang"
7
- :width="props.size === 'md' ? '114px' : '97px'"
8
- arrow-stroke-width="2.4"
9
- :disabled="props.disabled"
10
- :size="props.size"
11
- max-height="inherit"
4
+ v-model="selectedLang"
5
+ test-id="select-language"
6
+ :items="itemsLocal"
7
+ :width="props.size === 'md' ? '114px' : '97px'"
8
+ arrow-stroke-width="2.4"
9
+ :disabled="props.disabled"
10
+ :size="props.size"
11
+ max-height="inherit"
12
12
  >
13
13
  <template #toggleContent>
14
14
  <span class="language-dropdown__icon content-icon"
15
- ><ui-icon-icon2
15
+ ><ui-icon-icon2
16
16
  :name="selectedLang?.iconName"
17
17
  :height="props.size === 'md' ? '16' : '13'"
18
18
  :width="props.size === 'md' ? '24' : '19'"
19
- ></ui-icon-icon2
19
+ ></ui-icon-icon2
20
20
  ></span>
21
21
  {{ selectedLang?.text }}
22
22
  </template>
23
23
  <template #row="{ item }">
24
24
  <span class="language-dropdown__icon dropdown-icon">
25
25
  <ui-icon-icon2
26
- :name="item.iconName"
27
- :height="props.size === 'md' ? '16' : '13'"
28
- :width="props.size === 'md' ? '24' : '19'"
26
+ :name="item.iconName"
27
+ :height="props.size === 'md' ? '16' : '13'"
28
+ :width="props.size === 'md' ? '24' : '19'"
29
29
  ></ui-icon-icon2>
30
30
  </span>
31
31
  <span class="ui-item-text">{{ item.text }}</span>
@@ -39,18 +39,18 @@ import type { UI_I_Dropdown } from '~/node_modules/bfg-uikit/components/ui/dropd
39
39
  import { findInLocals } from '~/components/common/selectLanguage/lib/utils/utils'
40
40
 
41
41
  const props = withDefaults(
42
- defineProps<{
43
- normalizeLang: UI_I_Dropdown[]
44
- modelValue: UI_I_Dropdown
45
- disabled?: boolean
46
- width?: string
47
- size?: 'sm' | 'md'
48
- }>(),
49
- {
50
- disabled: false,
51
- width: '114px',
52
- size: 'md',
53
- }
42
+ defineProps<{
43
+ normalizeLang: UI_I_Dropdown[]
44
+ modelValue: UI_I_Dropdown
45
+ disabled?: boolean
46
+ width?: string
47
+ size?: 'sm' | 'md'
48
+ }>(),
49
+ {
50
+ disabled: false,
51
+ width: '114px',
52
+ size: 'md',
53
+ }
54
54
  )
55
55
 
56
56
  const emits = defineEmits<{
@@ -65,6 +65,10 @@ const selectedLang = computed<UI_I_Dropdown>({
65
65
  emits('update:model-value', newValue)
66
66
  },
67
67
  })
68
+
69
+ const itemsLocal = computed(() => {
70
+ return props.normalizeLang.filter(lang => !lang.disabled)
71
+ })
68
72
  </script>
69
73
 
70
74
  <style lang="scss" scoped>
@@ -5,6 +5,7 @@ export const locales: UI_I_Dropdown[] = [
5
5
  text: 'AR',
6
6
  value: 'ar_SA',
7
7
  iconName: 'ar-flag',
8
+ disabled: true
8
9
  },
9
10
  {
10
11
  text: 'RU',
@@ -47,6 +47,8 @@
47
47
  </template>
48
48
 
49
49
  <script setup lang="ts">
50
+ import { isRtl } from 'bfg-uikit/lib/config/trl'
51
+
50
52
  const props = withDefaults(
51
53
  defineProps<{
52
54
  parentElementSelector: string
@@ -70,6 +72,9 @@ const emits = defineEmits<{
70
72
 
71
73
  const leftPanelStyle = computed(() => {
72
74
  let width = `calc(${leftPanelWLocal.value}% - 1.5px)`
75
+ if (isRtl.value) {
76
+ width = `calc(${100 - leftPanelWLocal.value}% - 1.5px)`
77
+ }
73
78
  if (props.showToggleButton && leftPanelCollapsed.value) {
74
79
  width = '20px'
75
80
  }
@@ -77,8 +82,12 @@ const leftPanelStyle = computed(() => {
77
82
 
78
83
  return { width }
79
84
  })
85
+
80
86
  const rightPanelStyle = computed(() => {
81
87
  let width = `calc(${100 - leftPanelWLocal.value}% - 1.5px)`
88
+ if (isRtl.value) {
89
+ width = `calc(${leftPanelWLocal.value}% - 1.5px)`
90
+ }
82
91
  if (props.showToggleButton && leftPanelCollapsed.value) {
83
92
  width = 'calc(100% - 20px)'
84
93
  }
@@ -195,11 +204,35 @@ onUnmounted(() => {
195
204
  </script>
196
205
 
197
206
  <style>
198
- :root {
207
+ :root.is-new-view {
199
208
  --split-horizontal-border-color: #e9ebed;
209
+ --horizontal-panel-bg-color: #fff;
210
+ --trigger-bg-color: #e9ebed;
211
+ --trigger-color: #213444;
212
+ --new-gutter-bg-color: #e9ebed;
213
+ --new-gutter-hover-bg-color: #008fd6;
214
+ --new-gutter-before-bg-color: rgba(255, 255, 255, 0.8);
215
+
216
+ /*rtl*/
217
+ --horizontal-split-button-border-radius: 4px 0 0 4px;
218
+ --horizontal-split-button-border-radius-collapsed: 0 4px 4px 0;
219
+ --horizontal-split-button-rotate: 90deg;
220
+ --horizontal-split-button-rotate-collapsed: -90deg;
200
221
  }
201
222
  :root.dark-theme {
202
223
  --split-horizontal-border-color: #e9ebed1f;
224
+ --horizontal-panel-bg-color: #213444;
225
+ --trigger-bg-color: #314352;
226
+ --trigger-color: #e9ebed;
227
+ --new-gutter-bg-color: #394a58;
228
+ --new-gutter-hover-bg-color: #2ba2de;
229
+ --new-gutter-before-bg-color: rgba(33, 52, 68, 0.8);
230
+ }
231
+ :root.is-new-view[dir='rtl'] {
232
+ --horizontal-split-button-border-radius: 0 4px 4px 0;
233
+ --horizontal-split-button-border-radius-collapsed: 4px 0 0 4px;
234
+ --horizontal-split-button-rotate: -90deg;
235
+ --horizontal-split-button-rotate-collapsed: 90deg;
203
236
  }
204
237
  </style>
205
238
 
@@ -236,10 +269,14 @@ onUnmounted(() => {
236
269
  border: none;
237
270
 
238
271
  .btn-trigger {
239
- border-radius: 0 4px 4px 0;
272
+ border-radius: var(
273
+ --horizontal-split-button-border-radius-collapsed
274
+ );
240
275
 
241
276
  :deep(svg) {
242
- transform: rotate(-90deg);
277
+ transform: rotate(
278
+ var(--horizontal-split-button-rotate-collapsed)
279
+ );
243
280
  }
244
281
  }
245
282
  }
@@ -256,10 +293,10 @@ onUnmounted(() => {
256
293
  color: var(--trigger-color);
257
294
  outline: none;
258
295
  cursor: pointer;
259
- border-radius: 4px 0 0 4px;
296
+ border-radius: var(--horizontal-split-button-border-radius);
260
297
 
261
298
  :deep(svg) {
262
- transform: rotate(90deg);
299
+ transform: rotate(var(--horizontal-split-button-rotate));
263
300
  }
264
301
  }
265
302
  }
@@ -337,22 +374,3 @@ onUnmounted(() => {
337
374
  }
338
375
  }
339
376
  </style>
340
-
341
- <style>
342
- :root.is-new-view {
343
- --horizontal-panel-bg-color: #fff;
344
- --trigger-bg-color: #e9ebed;
345
- --trigger-color: #213444;
346
- --new-gutter-bg-color: #e9ebed;
347
- --new-gutter-hover-bg-color: #008fd6;
348
- --new-gutter-before-bg-color: rgba(255, 255, 255, 0.8);
349
- }
350
- :root.is-new-view.dark-theme {
351
- --horizontal-panel-bg-color: #213444;
352
- --trigger-bg-color: #314352;
353
- --trigger-color: #e9ebed;
354
- --new-gutter-bg-color: #394a58;
355
- --new-gutter-hover-bg-color: #2ba2de;
356
- --new-gutter-before-bg-color: rgba(33, 52, 68, 0.8);
357
- }
358
- </style>
@@ -43,6 +43,8 @@
43
43
  </template>
44
44
 
45
45
  <script setup lang="ts">
46
+ import { isRtl } from 'bfg-uikit/lib/config/trl'
47
+
46
48
  const props = withDefaults(
47
49
  defineProps<{
48
50
  parentElementSelector: string
@@ -66,6 +68,9 @@ const emits = defineEmits<{
66
68
 
67
69
  const leftPanelStyle = computed(() => {
68
70
  let width = `calc(${leftPanelW.value}% - 1.5px)`
71
+ if (isRtl.value) {
72
+ width = `calc(${100 - leftPanelW.value}% - 1.5px)`
73
+ }
69
74
  if (props.showToggleButton && leftPanelCollapsed.value) {
70
75
  width = '20px'
71
76
  }
@@ -75,6 +80,9 @@ const leftPanelStyle = computed(() => {
75
80
  })
76
81
  const rightPanelStyle = computed(() => {
77
82
  let width = `calc(${100 - leftPanelW.value}% - 1.5px)`
83
+ if (isRtl.value) {
84
+ width = `calc(${leftPanelW.value}% - 1.5px)`
85
+ }
78
86
  if (props.showToggleButton && leftPanelCollapsed.value) {
79
87
  width = 'calc(100% - 20px)'
80
88
  }
@@ -176,6 +184,32 @@ onUnmounted(() => {
176
184
  })
177
185
  </script>
178
186
 
187
+ <style>
188
+ :root:not(.is-new-view) {
189
+ --horizontal-panel-bg-color: #fff;
190
+ }
191
+ :root:not(.is-new-view).dark-theme {
192
+ --horizontal-panel-bg-color: #1b2a32;
193
+ }
194
+
195
+ :root {
196
+ --horizontal-split-button-border-right: 1px solid var(--global-border-color);
197
+ --horizontal-split-button-border-left: none;
198
+ --horizontal-split-button-icon-margin-left: auto;
199
+ --horizontal-split-button-icon-margin-right: 0;
200
+ --horizontal-split-button-icon-rotate: -90deg;
201
+ --horizontal-split-button-icon-rotate-collapsed: 90deg;
202
+ }
203
+ :root[dir='rtl'] {
204
+ --horizontal-split-button-border-right: none;
205
+ --horizontal-split-button-border-left: 1px solid var(--global-border-color);
206
+ --horizontal-split-button-icon-margin-left: 0;
207
+ --horizontal-split-button-icon-margin-right: auto;
208
+ --horizontal-split-button-icon-rotate: 90deg;
209
+ --horizontal-split-button-icon-rotate-collapsed: -90deg;
210
+ }
211
+ </style>
212
+
179
213
  <style scoped lang="scss">
180
214
  @import '@/assets/scss/common/mixins';
181
215
  .horizontal {
@@ -196,11 +230,14 @@ onUnmounted(() => {
196
230
  border-bottom: 1px solid var(--global-border-color);
197
231
 
198
232
  &.collapsed {
199
- border-right: 1px solid var(--global-border-color);
233
+ border-right: var(--horizontal-split-button-border-right);
234
+ border-left: var(--horizontal-split-button-border-left);
200
235
 
201
236
  .btn-trigger {
202
237
  .trigger-icon {
203
- transform: rotate(90deg);
238
+ transform: rotate(
239
+ var(--horizontal-split-button-icon-rotate-collapsed)
240
+ );
204
241
  }
205
242
  }
206
243
  }
@@ -212,6 +249,7 @@ onUnmounted(() => {
212
249
  flex: 0 0 36px;
213
250
  border: 0;
214
251
  padding: 0;
252
+ margin-right: 0;
215
253
  background-color: transparent;
216
254
  outline: none;
217
255
  cursor: pointer;
@@ -219,8 +257,9 @@ onUnmounted(() => {
219
257
  .trigger-icon {
220
258
  width: 16px;
221
259
  height: 16px;
222
- transform: rotate(-90deg);
223
- margin-left: auto;
260
+ transform: rotate(var(--horizontal-split-button-icon-rotate));
261
+ margin-left: var(--horizontal-split-button-icon-margin-left);
262
+ margin-right: var(--horizontal-split-button-icon-margin-right);
224
263
  fill: var(--triger-icon-color);
225
264
  }
226
265
  }
@@ -296,12 +335,3 @@ onUnmounted(() => {
296
335
  }
297
336
  }
298
337
  </style>
299
-
300
- <style>
301
- :root:not(.is-new-view) {
302
- --horizontal-panel-bg-color: #fff;
303
- }
304
- :root:not(.is-new-view).dark-theme {
305
- --horizontal-panel-bg-color: #1b2a32;
306
- }
307
- </style>
@@ -94,6 +94,7 @@
94
94
  :datastore="props.datastore"
95
95
  :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
96
96
  :passthrough-devices="props.passthroughDevices"
97
+ :mediated-devices="props.mediatedDevices"
97
98
  @change-boot-order="onChangeBootOrder"
98
99
  @send-data="onChangeCustomizeHardware"
99
100
  @get-storage="emits('get-storage', $event)"
@@ -174,7 +175,10 @@ import type {
174
175
  } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
175
176
  import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
176
177
  import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
177
- import type { UI_I_PciDevice } from '~/lib/models/store/vm/interfaces'
178
+ import type {
179
+ UI_I_MediatedDevice,
180
+ UI_I_PciDevice,
181
+ } from '~/lib/models/store/vm/interfaces'
178
182
  import { capabilities } from '~/components/common/vm/actions/common/lib/config/capabilities'
179
183
  import {
180
184
  stepsSchemeInitial,
@@ -199,6 +203,7 @@ const props = defineProps<{
199
203
  [UI_T_SelectedNavItem, null | number] | null
200
204
  >
201
205
  passthroughDevices: UI_I_PciDevice[]
206
+ mediatedDevices: UI_I_MediatedDevice[]
202
207
  vmNameInWizard: string
203
208
  capabilities?: UI_I_Capabilities
204
209
  dataCenter?: UI_I_TreeNode // для сферы
@@ -71,6 +71,7 @@
71
71
  :error-validation-fields="props.errorValidationFields"
72
72
  :vm-cpu-help-text-second="props.vmCpuHelpTextSecond"
73
73
  :passthrough-devices="props.passthroughDevices"
74
+ :mediated-devices="props.mediatedDevices"
74
75
  :get-datastore-table-func="props.getDatastoreTableFunc"
75
76
  :datastore="props.datastore"
76
77
  :project="props.project"
@@ -115,10 +116,13 @@ import type {
115
116
  } from '~/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/models/interfaces'
116
117
  import type { UI_T_SelectedNavItem } from '~/components/common/vm/actions/common/lib/models/types'
117
118
  import type { UI_I_TableInfoItem } from '~/components/atoms/table/info/lib/models/interfaces'
118
- import type { UI_I_ConfigurePciDevicesTable } from '~/lib/models/store/host/interfaces'
119
119
  import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/models/types'
120
120
  import type { UI_T_Project } from '~/lib/models/types'
121
- import type { UI_I_VmSettings } from '~/lib/models/store/vm/interfaces'
121
+ import type {
122
+ UI_I_MediatedDevice,
123
+ UI_I_PciDevice,
124
+ UI_I_VmSettings,
125
+ } from '~/lib/models/store/vm/interfaces'
122
126
  import type {
123
127
  I_DynamicSteps,
124
128
  UI_I_VmForm,
@@ -151,7 +155,8 @@ const props = defineProps<{
151
155
  finishFunc: any
152
156
  getDatastoreTableFunc: (payload: UI_I_TablePayload) => Promise<void>
153
157
  validateSendDataFunc: any
154
- passthroughDevices: UI_I_ConfigurePciDevicesTable | null
158
+ passthroughDevices: UI_I_PciDevice[]
159
+ mediatedDevices: UI_I_MediatedDevice[]
155
160
  vmNameInWizard: string
156
161
  capabilities?: UI_I_Capabilities
157
162
  schedulerTask?: any // TODO надо interface переместить глобално
@@ -35,6 +35,7 @@
35
35
  :is-clone="props.isClone"
36
36
  :state="props.state"
37
37
  :passthrough-devices="props.passthroughDevices"
38
+ :mediated-devices="props.mediatedDevices"
38
39
  :project="props.project"
39
40
  :nav-items="navItems"
40
41
  :errors="errors"
@@ -88,6 +89,7 @@
88
89
  :is-clone="props.isClone"
89
90
  :state="props.state"
90
91
  :passthrough-devices="props.passthroughDevices"
92
+ :mediated-devices="props.mediatedDevices"
91
93
  :project="props.project"
92
94
  :nav-items="navItems"
93
95
  :errors="errors"
@@ -132,6 +134,7 @@ import type { UI_T_ChangeBootOrder } from '~/components/common/vm/actions/lib/mo
132
134
  import type {
133
135
  API_UI_I_VmEditCpu,
134
136
  API_UI_I_VmEditMemory,
137
+ UI_I_MediatedDevice,
135
138
  UI_I_PciDevice,
136
139
  } from '~/lib/models/store/vm/interfaces'
137
140
  import { navItemsFunc } from '~/components/common/vm/actions/common/customizeHardware/lib/config/navItems'
@@ -173,6 +176,7 @@ const props = defineProps<{
173
176
  isClone?: boolean
174
177
  state?: string | number
175
178
  passthroughDevices?: UI_I_PciDevice[]
179
+ mediatedDevices?: UI_I_MediatedDevice[]
176
180
  project?: UI_T_Project
177
181
  }>()
178
182
  const emits = defineEmits<{