bfg-common 1.4.799 → 1.4.800

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 (146) 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/layout/theHeader/feedback/new/New.vue +29 -14
  64. package/components/common/layout/theHeader/feedback/new/additionalDetails/AdditionalDetails.vue +34 -9
  65. package/components/common/layout/theHeader/feedback/new/additionalDetails/Headline.vue +17 -6
  66. package/components/common/layout/theHeader/feedback/new/description/Description.vue +1 -0
  67. package/components/common/layout/theHeader/feedback/new/email/Email.vue +1 -1
  68. package/components/common/layout/theHeader/feedback/new/subtitle/Subtitle.vue +22 -6
  69. package/components/common/layout/theHeader/feedback/new/tabs/Tabs.vue +17 -15
  70. package/components/common/layout/theHeader/userMenu/modals/changePassword/ChangePasswordNew.vue +1 -1
  71. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +3 -2
  72. package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +1 -1
  73. package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +1 -1
  74. package/components/common/monitor/advanced/tools/chartOptionsModal/Notification.vue +7 -7
  75. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/timespan/Timespan.vue +95 -95
  76. package/components/common/monitor/overview/filters/customIntervalModal/CustomIntervalModal.vue +1 -1
  77. package/components/common/pages/hardwareHealth/historyTestimony/Graph.vue +463 -456
  78. package/components/common/pages/hardwareHealth/historyTestimony/tools/Tools.vue +389 -387
  79. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/ChartOptionsModal.vue +8 -0
  80. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/counters/Counters.vue +94 -94
  81. package/components/common/pages/hardwareHealth/historyTestimony/tools/chartOptionsModal/counters/timespan/Timespan.vue +66 -66
  82. package/components/common/pages/home/headline/Headline.vue +3 -2
  83. package/components/common/pages/home/headline/HeadlineNew.vue +1 -1
  84. package/components/common/pages/home/headline/HeadlineOld.vue +5 -0
  85. package/components/common/pages/home/widgets/vms/VmsNew.vue +1 -1
  86. package/components/common/pages/packages/Packages.vue +208 -0
  87. package/components/common/pages/packages/lib/config/actions.ts +59 -0
  88. package/components/common/pages/packages/lib/models/types.ts +8 -0
  89. package/components/common/pages/packages/tableView/TableView.vue +120 -0
  90. package/components/common/pages/packages/tableView/lib/config/configTable.ts +136 -0
  91. package/components/common/pages/packages/tableView/lib/config/tableKey.ts +14 -0
  92. package/components/common/pages/packages/tableView/lib/models/types.ts +12 -0
  93. package/components/common/pages/shortcuts/Shortcuts.vue +1 -1
  94. package/components/common/pages/tasks/Tasks.vue +23 -8
  95. package/components/common/pages/tasks/table/Table.vue +66 -16
  96. package/components/common/pages/tasks/table/errorInfo/ErrorInfo.vue +27 -10
  97. package/components/common/pages/tasks/table/expandDetails/ExpandDetails.vue +28 -12
  98. package/components/common/pages/tasks/table/lib/config/config.ts +11 -11
  99. package/components/common/select/radio/RadioGroup.vue +3 -3
  100. package/components/common/selectLanguage/SelectLanguage.vue +29 -25
  101. package/components/common/selectLanguage/lib/config/config.ts +1 -0
  102. package/components/common/split/horizontal/HorizontalNew.vue +42 -24
  103. package/components/common/split/horizontal/HorizontalOld.vue +43 -13
  104. package/components/common/vm/actions/add/Add.vue +6 -1
  105. package/components/common/vm/actions/clone/Clone.vue +8 -3
  106. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +4 -0
  107. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +6 -4
  108. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareOld.vue +26 -10
  109. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardware.vue +12 -4
  110. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareNew.vue +6 -3
  111. package/components/common/vm/actions/common/customizeHardware/virtualHardware/VirtualHardwareOld.vue +4 -2
  112. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +6 -4
  113. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +9 -3
  114. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskNew.vue +3 -2
  115. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/NewHardDiskOld.vue +3 -2
  116. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDevice.vue +87 -24
  117. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceNew.vue +14 -8
  118. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +9 -7
  119. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIo.vue +0 -4
  120. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +43 -12
  121. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoOld.vue +50 -25
  122. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIo.vue +5 -7
  123. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +64 -28
  124. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoOld.vue +60 -19
  125. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/lib/config/options.ts +11 -4
  126. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGrid.vue +16 -1
  127. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +59 -8
  128. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridOld.vue +60 -7
  129. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +1 -1
  130. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionOld.vue +1 -1
  131. package/components/common/vm/actions/common/lib/config/capabilities.ts +1 -1
  132. package/components/common/vm/actions/editSettings/EditSettings.vue +4 -0
  133. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +2 -0
  134. package/components/common/vm/actions/editSettings/new/New.vue +2 -0
  135. package/components/common/wizards/datastore/add/Add.vue +4 -4
  136. package/components/common/wizards/datastore/add/lib/config/steps.ts +14 -14
  137. package/components/common/wizards/datastore/add/lib/validations.ts +9 -9
  138. package/components/common/wizards/datastore/add/nfs/Nfs.vue +6 -9
  139. package/components/common/wizards/vm/migrate/Migrate.vue +12 -12
  140. package/components/common/wizards/vm/migrate/select/computeResource/ComputeResource.vue +1 -1
  141. package/composables/useLocal.ts +3 -1
  142. package/composables/useLocalStorage.ts +1 -1
  143. package/lib/models/store/vm/interfaces.ts +11 -0
  144. package/lib/models/table/interfaces.ts +1 -0
  145. package/package.json +3 -3
  146. package/store/tasks/actions.ts +2 -1
@@ -1,116 +1,116 @@
1
- import type {
2
- UI_I_ArbitraryObject,
3
- UI_I_Localization,
4
- } from '~/lib/models/interfaces'
5
- import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
6
-
7
- export const timespanFunc = (
8
- localization: UI_I_Localization
9
- ): UI_I_OptionItem[] => [
10
- {
11
- text: localization.inventoryMonitor.realTime,
12
- value: 'real_time',
13
- },
14
- {
15
- text: localization.inventoryMonitor.lastDay,
16
- value: 'last_day',
17
- },
18
- {
19
- text: localization.inventoryMonitor.lastWeek,
20
- value: 'last_week',
21
- },
22
- {
23
- text: localization.inventoryMonitor.lastMonth,
24
- value: 'last_month',
25
- },
26
- // {
27
- // text: localization.inventoryMonitor.lastYear,
28
- // value: 'last_year',
29
- // },
30
- {
31
- text: localization.inventoryMonitor.customInterval,
32
- value: 'custom_interval',
33
- },
34
- ]
35
-
36
- export const customTimeFunc = (
37
- localization: UI_I_Localization,
38
- value: number,
39
- lang: string
40
- ): UI_I_OptionItem[] => {
41
- const isLangRu = lang === 'ru_RU'
42
-
43
- const hourText = isLangRu
44
- ? getCorrectRuForm(value, 'hour')
45
- : localization.common.hours2
46
- const dayText = isLangRu
47
- ? getCorrectRuForm(value, 'day')
48
- : localization.common.days2
49
- const weekText = isLangRu
50
- ? getCorrectRuForm(value, 'week')
51
- : localization.common.weeks2
52
- const monthText = isLangRu
53
- ? getCorrectRuForm(value, 'month')
54
- : localization.common.months2
55
-
56
- return [
57
- {
58
- text: hourText,
59
- value: 'hours',
60
- },
61
- {
62
- text: dayText,
63
- value: 'days',
64
- },
65
- {
66
- text: weekText,
67
- value: 'weeks',
68
- },
69
- {
70
- text: monthText,
71
- value: 'months',
72
- },
73
- ]
74
- }
75
-
76
- export const chartTypeFunc = (
77
- localization: UI_I_Localization
78
- ): UI_I_OptionItem[] => [
79
- {
80
- text: localization.inventoryMonitor.lineGraph,
81
- value: 'line_graph',
82
- },
83
- {
84
- text: localization.inventoryMonitor.stackedGraph,
85
- value: 'stacked_graph',
86
- },
87
- ]
88
-
89
- const getCorrectRuForm = (value: number, type: string): string => {
90
- // TODO поправить используя correctRuUnit из плагина date
91
- const forms: UI_I_ArbitraryObject<string[]> = {
92
- hour: ['Час', 'Часа', 'Часов'],
93
- day: ['День', 'Дня', 'Дней'],
94
- week: ['Неделя', 'Недели', 'Недель'],
95
- month: ['Месяц', 'Месяца', 'Месяцев'],
96
- }
97
-
98
- let text: string
99
-
100
- if (!value) {
101
- return getCorrectRuForm[type]
102
- }
103
-
104
- if (value % 10 === 1 && value % 100 !== 11) {
105
- text = forms[type][0]
106
- } else if (
107
- [2, 3, 4].includes(value % 10) &&
108
- ![12, 13, 14].includes(value % 100)
109
- ) {
110
- text = forms[type][1]
111
- } else {
112
- text = forms[type][2]
113
- }
114
- getCorrectRuForm[type] = text
115
- return text
116
- }
1
+ import type {
2
+ UI_I_ArbitraryObject,
3
+ UI_I_Localization,
4
+ } from '~/lib/models/interfaces'
5
+ import type { UI_I_OptionItem } from '~/components/atoms/lib/models/interfaces'
6
+
7
+ export const timespanFunc = (
8
+ localization: UI_I_Localization
9
+ ): UI_I_OptionItem[] => [
10
+ {
11
+ text: localization.inventoryMonitor.realTime,
12
+ value: 'real_time',
13
+ },
14
+ {
15
+ text: localization.inventoryMonitor.lastDay,
16
+ value: 'last_day',
17
+ },
18
+ {
19
+ text: localization.inventoryMonitor.lastWeek,
20
+ value: 'last_week',
21
+ },
22
+ {
23
+ text: localization.inventoryMonitor.lastMonth,
24
+ value: 'last_month',
25
+ },
26
+ // {
27
+ // text: localization.inventoryMonitor.lastYear,
28
+ // value: 'last_year',
29
+ // },
30
+ {
31
+ text: localization.inventoryMonitor.customInterval,
32
+ value: 'custom_interval',
33
+ },
34
+ ]
35
+
36
+ export const customTimeFunc = (
37
+ localization: UI_I_Localization,
38
+ value: number,
39
+ lang: string
40
+ ): UI_I_OptionItem[] => {
41
+ const isLangRu = lang === 'ru_RU'
42
+
43
+ const hourText = isLangRu
44
+ ? getCorrectRuForm(value, 'hour')
45
+ : localization.common.hours2
46
+ const dayText = isLangRu
47
+ ? getCorrectRuForm(value, 'day')
48
+ : localization.common.days2
49
+ const weekText = isLangRu
50
+ ? getCorrectRuForm(value, 'week')
51
+ : localization.common.weeks2
52
+ const monthText = isLangRu
53
+ ? getCorrectRuForm(value, 'month')
54
+ : localization.common.months2
55
+
56
+ return [
57
+ {
58
+ text: hourText,
59
+ value: 'hours',
60
+ },
61
+ {
62
+ text: dayText,
63
+ value: 'days',
64
+ },
65
+ {
66
+ text: weekText,
67
+ value: 'weeks',
68
+ },
69
+ {
70
+ text: monthText,
71
+ value: 'months',
72
+ },
73
+ ]
74
+ }
75
+
76
+ export const chartTypeFunc = (
77
+ localization: UI_I_Localization
78
+ ): UI_I_OptionItem[] => [
79
+ {
80
+ text: localization.inventoryMonitor.lineGraph,
81
+ value: 'line_graph',
82
+ },
83
+ {
84
+ text: localization.inventoryMonitor.stackedGraph,
85
+ value: 'stacked_graph',
86
+ },
87
+ ]
88
+
89
+ const getCorrectRuForm = (value: number, type: string): string => {
90
+ // TODO поправить используя correctRuUnit из плагина date
91
+ const forms: UI_I_ArbitraryObject<string[]> = {
92
+ hour: ['Час', 'Часа', 'Часов'],
93
+ day: ['День', 'Дня', 'Дней'],
94
+ week: ['Неделя', 'Недели', 'Недель'],
95
+ month: ['Месяц', 'Месяца', 'Месяцев'],
96
+ }
97
+
98
+ let text: string
99
+
100
+ if (!value) {
101
+ return getCorrectRuForm[type]
102
+ }
103
+
104
+ if (value % 10 === 1 && value % 100 !== 11) {
105
+ text = forms[type][0]
106
+ } else if (
107
+ [2, 3, 4].includes(value % 10) &&
108
+ ![12, 13, 14].includes(value % 100)
109
+ ) {
110
+ text = forms[type][1]
111
+ } else {
112
+ text = forms[type][2]
113
+ }
114
+ getCorrectRuForm[type] = text
115
+ return text
116
+ }
@@ -29,6 +29,10 @@ const emits = defineEmits<{
29
29
  (event: 'select-item', value: UI_I_ContextMenuItem): void
30
30
  (event: 'hide'): void
31
31
  }>()
32
+
33
+ const { $store }: any = useNuxtApp()
34
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
35
+
32
36
  const selectItem = (item: UI_I_ContextMenuItem): void => {
33
37
  emits('select-item', item)
34
38
  }
@@ -38,11 +42,12 @@ const elementId = ref<string>(`context-${useUniqueId()}`)
38
42
  const currentContextMenuY = ref<string>('')
39
43
  const currentContextMenuX = ref<string>('')
40
44
  const setCurrentPositionsPopup = (): void => {
41
- const contextMenuY = props.contextMenu.y
45
+ let contextMenuY = props.contextMenu.y
42
46
  const contextMenuX = props.contextMenu.x
43
47
 
44
- const contextWrap: HTMLElement | null =
45
- document.querySelector(`#${elementId.value} .context-wrap`)
48
+ const contextWrap: HTMLElement | null = document.querySelector(
49
+ `#${elementId.value} .context-wrap`
50
+ )
46
51
  const contextW = contextWrap?.offsetWidth || 0
47
52
  const contextH = contextWrap?.offsetHeight || 0
48
53
 
@@ -52,11 +57,13 @@ const setCurrentPositionsPopup = (): void => {
52
57
  if (contextMenuY + contextH >= windowH) {
53
58
  currentContextMenuY.value = 'auto'
54
59
  } else {
60
+ if (isNewView.value) contextMenuY += 8
55
61
  currentContextMenuY.value = `${contextMenuY}px`
56
62
  }
57
63
 
58
64
  if (contextMenuX + contextW >= windowW) {
59
- const divisionW = windowW - contextW
65
+ let divisionW = windowW - contextW
66
+ if (isNewView.value) divisionW -= 16
60
67
  currentContextMenuX.value = `${divisionW}px`
61
68
  } else {
62
69
  currentContextMenuX.value = `${contextMenuX}px`
@@ -66,6 +73,9 @@ const setCurrentPositionsPopup = (): void => {
66
73
  const windowMousedown = (): void => {
67
74
  emits('hide')
68
75
  }
76
+ const windowResize = (): void => {
77
+ emits('hide')
78
+ }
69
79
  watch(
70
80
  () => props.contextMenu.y,
71
81
  (newValue: number) => {
@@ -73,8 +83,10 @@ watch(
73
83
 
74
84
  if (newValue < 0) {
75
85
  window.removeEventListener('mousedown', windowMousedown)
86
+ window.removeEventListener('resize', windowResize)
76
87
  } else {
77
88
  window.addEventListener('mousedown', windowMousedown)
89
+ window.addEventListener('resize', windowResize)
78
90
  }
79
91
 
80
92
  setTimeout(() => {
@@ -46,7 +46,8 @@ const selectItem = (item: UI_I_ContextMenuItem): void => {
46
46
  }
47
47
 
48
48
  const setElementPosition = (event: I_HTMLLiElement): void => {
49
- const top = event.target.getBoundingClientRect().top
49
+ const top =
50
+ event.target.getBoundingClientRect().top - (isNewView.value ? 8 : 0)
50
51
  const childMenu = event.target.children[1].children[0]
51
52
  childMenu.style.top = `${top}px`
52
53
 
@@ -22,7 +22,7 @@
22
22
  @mousedown="emits('select-item', item)"
23
23
  >
24
24
  <span :class="['context-icon', item.iconClassName]" />
25
- <span class="menu-item-text">{{ item.name }}</span>
25
+ <span class="menu-item-text text-ellipsis">{{ item.name }}</span>
26
26
  <ui-icon v-if="item.items.length" name="arrow" class="arrow-icon" />
27
27
  <span v-if="item.shortcut" class="shortcut">{{ item.shortcut }}</span>
28
28
  </span>
@@ -59,11 +59,43 @@ const emits = defineEmits<{
59
59
  }>()
60
60
  </script>
61
61
 
62
+ <style>
63
+ :root.is-new-view {
64
+ --context-menu-bg-color: #ffffff;
65
+ --context-menu-item-bg-hover-color: rgba(233, 235, 237, 0.4);
66
+ --context-menu-text-color: #4d5d69;
67
+ --context-menu-text-disabled-color: #bdc3c7;
68
+ --context-menu-text-hover-color: #182531;
69
+ --context-menu-border-color: #e9ebed;
70
+
71
+ /*rtl*/
72
+ --context-menu-wrap-transform: none;
73
+ --context-menu-wrap-transform-left: translateX(-100%);
74
+ --context-menu-wrap-left: -12px;
75
+ --context-menu-wrap-right: unset;
76
+ }
77
+ :root.is-new-view.dark-theme {
78
+ --context-menu-bg-color: #334453;
79
+ --context-menu-item-bg-hover-color: rgba(233, 235, 237, 0.06);
80
+ --context-menu-text-color: #e9eaec;
81
+ --context-menu-text-disabled-color: #bdc3c7b8;
82
+ --context-menu-text-hover-color: #ffffff;
83
+ --context-menu-border-color: rgba(233, 235, 237, 0.12);
84
+ }
85
+
86
+ :root.is-new-view[dir='rtl'] {
87
+ --context-menu-wrap-transform: translateX(100%);
88
+ --context-menu-wrap-transform-left: translateX(0);
89
+ --context-menu-wrap-left: unset;
90
+ --context-menu-wrap-right: calc(100% + 12px);
91
+ }
92
+ </style>
62
93
  <style scoped lang="scss">
63
94
  .context-wrap {
64
- width: auto;
65
- max-width: 400px;
66
- min-width: 212px;
95
+ //width: auto;
96
+ //max-width: 400px;
97
+ //min-width: 212px;
98
+ width: 212px;
67
99
  background: var(--context-menu-bg-color);
68
100
  border-radius: 8px;
69
101
  user-select: none;
@@ -71,6 +103,8 @@ const emits = defineEmits<{
71
103
  max-height: 100vh;
72
104
  box-shadow: var(--box-shadow);
73
105
  padding: 8px;
106
+ //overflow-x: hidden;
107
+ //overflow-y: auto;
74
108
 
75
109
  .context-loader {
76
110
  position: absolute;
@@ -108,21 +142,30 @@ const emits = defineEmits<{
108
142
  left: -12px;
109
143
  }
110
144
  :deep(.context-children) {
111
- left: -12px;
145
+ left: var(--context-menu-wrap-left);
146
+ right: var(--context-menu-wrap-right);
112
147
 
113
148
  .context-wrap {
114
- transform: translateX(-100%);
149
+ transform: var(--context-menu-wrap-transform-left);
115
150
  left: auto;
116
151
  }
117
152
  }
118
153
  }
119
154
 
120
- &.has-divider::before {
121
- content: '';
122
- display: block;
123
- height: 0.03rem;
124
- background-color: var(--context-menu-border-color);
125
- margin: 0 8px 8px;
155
+ &.has-divider {
156
+ margin-top: 16px;
157
+
158
+ &::before {
159
+ content: '';
160
+ position: absolute;
161
+ top: -8px;
162
+ left: 0;
163
+ right: 0;
164
+ display: block;
165
+ height: 0.03rem;
166
+ background-color: var(--context-menu-border-color);
167
+ margin: 0 8px 8px;
168
+ }
126
169
  }
127
170
 
128
171
  .context-link {
@@ -134,7 +177,7 @@ const emits = defineEmits<{
134
177
  align-items: center;
135
178
  user-select: none;
136
179
  border-radius: 4px;
137
- padding: 6px 8px;
180
+ padding: 6px 18px 8px 6px;
138
181
 
139
182
  .menu-item-text {
140
183
  flex: 1 1 0;
@@ -186,26 +229,9 @@ const emits = defineEmits<{
186
229
 
187
230
  .context-wrap {
188
231
  position: fixed;
232
+ transform: var(--context-menu-wrap-transform);
189
233
  }
190
234
  }
191
235
  }
192
236
  }
193
237
  </style>
194
- <style>
195
- :root.is-new-view {
196
- --context-menu-bg-color: #ffffff;
197
- --context-menu-item-bg-hover-color: rgba(233, 235, 237, 0.4);
198
- --context-menu-text-color: #4d5d69;
199
- --context-menu-text-disabled-color: #bdc3c7;
200
- --context-menu-text-hover-color: #182531;
201
- --context-menu-border-color: #e9ebed;
202
- }
203
- :root.is-new-view.dark-theme {
204
- --context-menu-bg-color: #334453;
205
- --context-menu-item-bg-hover-color: rgba(233, 235, 237, 0.06);
206
- --context-menu-text-color: #e9eaec;
207
- --context-menu-text-disabled-color: #bdc3c7b8;
208
- --context-menu-text-hover-color: #ffffff;
209
- --context-menu-border-color: rgba(233, 235, 237, 0.12);
210
- }
211
- </style>
@@ -64,6 +64,35 @@ const emits = defineEmits<{
64
64
  }>()
65
65
  </script>
66
66
 
67
+ <style>
68
+ :root {
69
+ --context-menu-hover-bg-color: #e8e8e8;
70
+ --context-menu-border-color: #949494;
71
+ --context-menu-inset-border-color: #d4d5d6;
72
+ --context-menu-item-header-color: #eceff2;
73
+ --context-menu-hover-border-color: #666;
74
+
75
+ /*rtl*/
76
+ --context-menu-wrap-transform: none;
77
+ --context-menu-wrap-transform-left: translateX(-100%);
78
+ --context-menu-wrap-left: 0;
79
+ --context-menu-wrap-right: unset;
80
+ }
81
+ :root.dark-theme {
82
+ --context-menu-hover-bg-color: #324f61;
83
+ --context-menu-border-color: #495865;
84
+ --context-menu-inset-border-color: #485764;
85
+ --context-menu-item-header-color: #29414e;
86
+ --context-menu-hover-border-color: #fff;
87
+ }
88
+
89
+ :root[dir='rtl'] {
90
+ --context-menu-wrap-transform: translateX(100%);
91
+ --context-menu-wrap-transform-left: translateX(0);
92
+ --context-menu-wrap-left: unset;
93
+ --context-menu-wrap-right: 100%;
94
+ }
95
+ </style>
67
96
  <style scoped lang="scss">
68
97
  .loader-wrapper {
69
98
  width: 100%;
@@ -120,11 +149,11 @@ const emits = defineEmits<{
120
149
  }
121
150
  &.left {
122
151
  :deep(.context-children) {
123
- left: 0;
124
- background: red;
152
+ left: var(--context-menu-wrap-left);
153
+ right: var(--context-menu-wrap-right);
125
154
 
126
155
  .context-wrap {
127
- transform: translateX(-100%);
156
+ transform: var(--context-menu-wrap-transform-left);
128
157
  left: auto;
129
158
  }
130
159
  }
@@ -181,6 +210,7 @@ const emits = defineEmits<{
181
210
 
182
211
  .context-wrap {
183
212
  position: fixed;
213
+ transform: var(--context-menu-wrap-transform);
184
214
  }
185
215
  }
186
216
  }
@@ -195,19 +225,3 @@ const emits = defineEmits<{
195
225
  }
196
226
  }
197
227
  </style>
198
- <style>
199
- :root {
200
- --context-menu-hover-bg-color: #e8e8e8;
201
- --context-menu-border-color: #949494;
202
- --context-menu-inset-border-color: #d4d5d6;
203
- --context-menu-item-header-color: #eceff2;
204
- --context-menu-hover-border-color: #666;
205
- }
206
- :root.dark-theme {
207
- --context-menu-hover-bg-color: #324f61;
208
- --context-menu-border-color: #495865;
209
- --context-menu-inset-border-color: #485764;
210
- --context-menu-item-header-color: #29414e;
211
- --context-menu-hover-border-color: #fff;
212
- }
213
- </style>