bfg-common 1.4.655 → 1.4.656

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 (116) hide show
  1. package/assets/localization/local_be.json +13 -1
  2. package/assets/localization/local_en.json +13 -1
  3. package/assets/localization/local_hy.json +13 -1
  4. package/assets/localization/local_kk.json +13 -1
  5. package/assets/localization/local_ru.json +14 -2
  6. package/assets/localization/local_zh.json +13 -1
  7. package/components/atoms/TheIcon3.vue +50 -50
  8. package/components/atoms/modal/bySteps/BySteps.vue +253 -253
  9. package/components/atoms/stack/StackBlock.vue +185 -185
  10. package/components/atoms/table/dataGrid/DataGrid.vue +1633 -1633
  11. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +222 -222
  12. package/components/common/browse/BrowseNew.vue +237 -237
  13. package/components/common/browse/BrowseOld.vue +217 -217
  14. package/components/common/browse/blocks/contents/Files.vue +37 -37
  15. package/components/common/browse/blocks/contents/FilesOld.vue +72 -72
  16. package/components/common/browse/blocks/contents/filesNew/FilesNew.vue +96 -96
  17. package/components/common/browse/blocks/contents/filesNew/Skeleton.vue +18 -18
  18. package/components/common/context/lib/models/interfaces.ts +30 -30
  19. package/components/common/context/recursion/Recursion.vue +86 -86
  20. package/components/common/context/recursion/RecursionNew.vue +199 -199
  21. package/components/common/context/recursion/RecursionOld.vue +213 -213
  22. package/components/common/layout/theHeader/helpMenu/About.vue +85 -85
  23. package/components/common/layout/theHeader/helpMenu/aboutNew/AboutNew.vue +105 -105
  24. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +152 -152
  25. package/components/common/modals/confirmByInput/ConfirmByInput.vue +206 -206
  26. package/components/common/modals/unsavedChanges/UnsavedChanges.vue +56 -56
  27. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/config/utils.ts +143 -2
  28. package/components/common/monitor/advanced/tools/chartOptionsModal/counters/table/lib/models/interfaces.ts +1 -0
  29. package/components/common/monitor/advanced/tools/chartOptionsModal/lib/models/types.ts +1 -1
  30. package/components/common/monitor/advanced/tools/chartOptionsModal/metrics/lib/config/optionsMetrics.ts +5 -5
  31. package/components/common/monitor/overview/filters/Filters.vue +1 -3
  32. package/components/common/monitor/overview/filters/lib/config/filterOptions.ts +27 -9
  33. package/components/common/monitor/overview/filters/lib/models/interfaces.ts +1 -0
  34. package/components/common/monitor/overview/filters/lib/models/types.ts +2 -0
  35. package/components/common/monitor/resourceAllocation/lib/models/interfaces.ts +13 -0
  36. package/components/common/monitor/resourceAllocation/resourceAllocation.vue +196 -0
  37. package/components/common/spiceConsole/Drawer.vue +370 -370
  38. package/components/common/spiceConsole/lib/models/interfaces.ts +5 -5
  39. package/components/common/split/vertical/Vertical.vue +160 -160
  40. package/components/common/vm/actions/add/Add.vue +617 -617
  41. package/components/common/vm/actions/clone/lib/config/steps.ts +129 -129
  42. package/components/common/vm/actions/common/customizeHardware/CustomizeHardware.vue +267 -267
  43. package/components/common/vm/actions/common/customizeHardware/CustomizeHardwareNew.vue +269 -269
  44. package/components/common/vm/actions/common/customizeHardware/virtualHardware/browseView/BrowseView.vue +219 -219
  45. package/components/common/vm/actions/common/customizeHardware/virtualHardware/bus/BusNew.vue +118 -118
  46. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveNew.vue +161 -161
  47. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/CdDvdDriveOld.vue +165 -165
  48. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/Media.vue +25 -25
  49. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cdDvdDrive/media/MediaNew.vue +55 -55
  50. package/components/common/vm/actions/common/customizeHardware/virtualHardware/cpu/Cpu.vue +338 -338
  51. package/components/common/vm/actions/common/customizeHardware/virtualHardware/lib/config/dropdownItems.ts +147 -147
  52. package/components/common/vm/actions/common/customizeHardware/virtualHardware/limit/Limit.vue +220 -220
  53. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/mode/ModeOld.vue +55 -55
  54. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newHardDisk/sharing/SharingNew.vue +44 -44
  55. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +281 -281
  56. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/NewNetworkNew.vue +124 -124
  57. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/LocationOld.vue +134 -134
  58. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/New.vue +63 -63
  59. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/location/new/table/lib/config/config.ts +95 -95
  60. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddress.vue +119 -119
  61. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressNew.vue +69 -69
  62. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newNetwork/macAddress/MacAddressOld.vue +83 -83
  63. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceNew.vue +85 -85
  64. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/NewPciDeviceOld.vue +91 -91
  65. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/directPathIo/DirectPathIoNew.vue +35 -35
  66. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/dynamicDirectPathIo/DynamicDirectPathIoNew.vue +48 -48
  67. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/Note.vue +15 -15
  68. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteNew.vue +42 -42
  69. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/note/NoteOld.vue +30 -30
  70. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/nvidiaGrid/NvidiaGridNew.vue +30 -30
  71. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newPciDevice/typeSelection/TypeSelectionNew.vue +46 -46
  72. package/components/common/vm/actions/common/customizeHardware/virtualHardware/newUsbController/NewUsbControllerNew.vue +56 -56
  73. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/Other.vue +16 -16
  74. package/components/common/vm/actions/common/customizeHardware/virtualHardware/other/OtherNew.vue +30 -30
  75. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardNew.vue +107 -107
  76. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/VideoCardOld.vue +115 -115
  77. package/components/common/vm/actions/common/customizeHardware/virtualHardware/videoCard/totalVideoMemory/TotalVideoMemoryNew.vue +54 -54
  78. package/components/common/vm/actions/common/customizeHardware/vmoptions/Vmoptions.vue +145 -145
  79. package/components/common/vm/actions/common/customizeHardware/vmoptions/VmoptionsNew.vue +102 -102
  80. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/BootOptionsNew.vue +75 -75
  81. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/delay/Delay.vue +26 -26
  82. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/Firmware.vue +57 -57
  83. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/firmware/FirmwareNew.vue +42 -42
  84. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/menu/MenuNew.vue +25 -25
  85. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/Order.vue +171 -171
  86. package/components/common/vm/actions/common/customizeHardware/vmoptions/bootOptions/order/OrderNew.vue +50 -50
  87. package/components/common/vm/actions/common/customizeHardware/vmoptions/generalOptions/GeneralOptionsNew.vue +141 -141
  88. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/New.vue +140 -140
  89. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/copyPaste/CopyPasteNew.vue +30 -30
  90. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/fileTransfer/FileTransferNew.vue +30 -30
  91. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/folderSharing/FolderSharingNew.vue +30 -30
  92. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +32 -32
  93. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/keymap/KeymapNew.vue +39 -39
  94. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/Password.vue +103 -103
  95. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordNew.vue +102 -102
  96. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/password/PasswordOld.vue +94 -94
  97. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirection.vue +28 -28
  98. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionNew.vue +38 -38
  99. package/components/common/vm/actions/common/customizeHardware/vmoptions/remoteConsoleOptions/usbRedirection/UsbRedirectionOld.vue +44 -44
  100. package/components/common/vm/actions/common/select/storage/Storage.vue +130 -130
  101. package/components/common/vm/actions/common/select/storage/StorageOld.vue +129 -129
  102. package/components/common/vm/actions/editSettings/EditSettings.vue +232 -232
  103. package/components/common/vm/actions/editSettings/EditSettingsOld.vue +183 -183
  104. package/components/common/vm/actions/editSettings/new/New.vue +177 -177
  105. package/components/common/vm/actions/editSettings/new/Skeleton.vue +88 -88
  106. package/components/common/wizards/datastore/add/Add.vue +1 -1
  107. package/components/common/wizards/datastore/add/nfs/accessibility/tablesView/TablesView.vue +1 -2
  108. package/composables/productNameLocal.ts +30 -30
  109. package/package.json +1 -1
  110. package/plugins/date.ts +233 -233
  111. package/plugins/recursion.ts +311 -311
  112. package/public/spice-console/lib/images/bitmap.js +203 -203
  113. package/public/spice-console/network/spicechannel.js +383 -383
  114. package/store/main/mutations.ts +7 -7
  115. package/store/main/state.ts +7 -7
  116. package/store/tasks/mappers/recentTasks.ts +64 -64
@@ -1,105 +1,105 @@
1
- <template>
2
- <ui-modal
3
- test-id="about-modal"
4
- width="720px"
5
- :title="props.title"
6
- :subtitle="props.subtitle"
7
- class="about-modal"
8
- @hide="onHideModal"
9
- >
10
- <template #content>
11
- <ui-modal-block-standard>
12
- <div class="about-modal__text">
13
- <p>{{ aboutHeadingText }}</p>
14
-
15
- <p>{{ localization.layout.aboutSubtitle }}</p>
16
- </div>
17
-
18
- <div class="about-modal__description">
19
- {{ props.aboutDescOne }}
20
-
21
- (<a
22
- id="about-description-link"
23
- data-id="about-description-link"
24
- :href="url"
25
- target="_blank"
26
- class="about-modal__description-link"
27
- >
28
- {{ props.url }} </a
29
- >)
30
-
31
- {{ props.aboutDescSecond }}
32
- </div>
33
- </ui-modal-block-standard>
34
- </template>
35
- <template #footerContent><span /></template>
36
- <template #footerLeftContent><span /></template>
37
- </ui-modal>
38
- </template>
39
-
40
- <script lang="ts" setup>
41
- import type { UI_I_Localization } from '~/lib/models/interfaces'
42
-
43
- const props = defineProps<{
44
- title: string
45
- subtitle: string
46
- aboutHeadingText: string
47
- aboutDescOne: string
48
- aboutDescSecond: string
49
- isBetaVersion: boolean
50
- isDev: boolean
51
- projectName: string
52
- url: string
53
- }>()
54
- const emits = defineEmits<{
55
- (event: 'hide'): void
56
- }>()
57
-
58
- const localization = computed<UI_I_Localization>(() => useLocal())
59
-
60
- const onHideModal = (): void => {
61
- emits('hide')
62
- }
63
- </script>
64
-
65
- <style>
66
- :root {
67
- --about-text-color: #4d5d69;
68
- --about-text-link-hover-color: #0081c1;
69
- }
70
- :root.dark-theme {
71
- --about-text-color: #9da6ad;
72
- --about-text-link-hover-color: #008fd6;
73
- }
74
- </style>
75
-
76
- <style lang="scss" scoped>
77
- .about-modal {
78
- &__text {
79
- color: var(--about-text-color);
80
- font-size: 13px;
81
- font-weight: 400;
82
- line-height: 15.73px;
83
-
84
- p:last-child {
85
- margin: 16px 0;
86
- }
87
- }
88
- &__description {
89
- color: var(--about-text-color);
90
- font-size: 13px;
91
- font-weight: 400;
92
- line-height: 15.73px;
93
-
94
- &-link {
95
- color: #0786d2;
96
- &:hover {
97
- color: var(--about-text-link-hover-color);
98
- }
99
- }
100
- }
101
- }
102
- :deep(.title-wrapper__subtitle) {
103
- max-width: 400px;
104
- }
105
- </style>
1
+ <template>
2
+ <ui-modal
3
+ test-id="about-modal"
4
+ width="720px"
5
+ :title="props.title"
6
+ :subtitle="props.subtitle"
7
+ class="about-modal"
8
+ @hide="onHideModal"
9
+ >
10
+ <template #content>
11
+ <ui-modal-block-standard>
12
+ <div class="about-modal__text">
13
+ <p>{{ aboutHeadingText }}</p>
14
+
15
+ <p>{{ localization.layout.aboutSubtitle }}</p>
16
+ </div>
17
+
18
+ <div class="about-modal__description">
19
+ {{ props.aboutDescOne }}
20
+
21
+ (<a
22
+ id="about-description-link"
23
+ data-id="about-description-link"
24
+ :href="url"
25
+ target="_blank"
26
+ class="about-modal__description-link"
27
+ >
28
+ {{ props.url }} </a
29
+ >)
30
+
31
+ {{ props.aboutDescSecond }}
32
+ </div>
33
+ </ui-modal-block-standard>
34
+ </template>
35
+ <template #footerContent><span /></template>
36
+ <template #footerLeftContent><span /></template>
37
+ </ui-modal>
38
+ </template>
39
+
40
+ <script lang="ts" setup>
41
+ import type { UI_I_Localization } from '~/lib/models/interfaces'
42
+
43
+ const props = defineProps<{
44
+ title: string
45
+ subtitle: string
46
+ aboutHeadingText: string
47
+ aboutDescOne: string
48
+ aboutDescSecond: string
49
+ isBetaVersion: boolean
50
+ isDev: boolean
51
+ projectName: string
52
+ url: string
53
+ }>()
54
+ const emits = defineEmits<{
55
+ (event: 'hide'): void
56
+ }>()
57
+
58
+ const localization = computed<UI_I_Localization>(() => useLocal())
59
+
60
+ const onHideModal = (): void => {
61
+ emits('hide')
62
+ }
63
+ </script>
64
+
65
+ <style>
66
+ :root {
67
+ --about-text-color: #4d5d69;
68
+ --about-text-link-hover-color: #0081c1;
69
+ }
70
+ :root.dark-theme {
71
+ --about-text-color: #9da6ad;
72
+ --about-text-link-hover-color: #008fd6;
73
+ }
74
+ </style>
75
+
76
+ <style lang="scss" scoped>
77
+ .about-modal {
78
+ &__text {
79
+ color: var(--about-text-color);
80
+ font-size: 13px;
81
+ font-weight: 400;
82
+ line-height: 15.73px;
83
+
84
+ p:last-child {
85
+ margin: 16px 0;
86
+ }
87
+ }
88
+ &__description {
89
+ color: var(--about-text-color);
90
+ font-size: 13px;
91
+ font-weight: 400;
92
+ line-height: 15.73px;
93
+
94
+ &-link {
95
+ color: #0786d2;
96
+ &:hover {
97
+ color: var(--about-text-link-hover-color);
98
+ }
99
+ }
100
+ }
101
+ }
102
+ :deep(.title-wrapper__subtitle) {
103
+ max-width: 400px;
104
+ }
105
+ </style>
@@ -1,152 +1,152 @@
1
- <template>
2
- <common-main-navigation-panel-new
3
- v-if="props.isNewView"
4
- v-model:main-menu-hovered="mainMenuHovered"
5
- v-model:menu-pined="menuPined"
6
- :main-menu-status="props.mainMenuStatus"
7
- :navigation-items="props.navigationItems"
8
- :parent-status="props.parentStatus"
9
- :disabled-pin="props.disabledPin"
10
- :menu-collapsed="menuCollapsed"
11
- :show-menu="showMenu"
12
- @toggle="emits('toggle', $event)"
13
- @collapse-menu="collapseMenu"
14
- @change-menu-pin="changeMenuPin"
15
- @hide-main-menu="hideMainMenu"
16
- />
17
- <common-main-navigation-panel-old
18
- v-else
19
- v-model:main-menu-hovered="mainMenuHovered"
20
- v-model:menu-pined="menuPined"
21
- :main-menu-status="props.mainMenuStatus"
22
- :navigation-items="props.navigationItems"
23
- :parent-status="props.parentStatus"
24
- :disabled-pin="props.disabledPin"
25
- :menu-collapsed="menuCollapsed"
26
- :show-menu="showMenu"
27
- @toggle="emits('toggle', $event)"
28
- @collapse-menu="collapseMenu"
29
- @change-menu-pin="changeMenuPin"
30
- @hide-main-menu="hideMainMenu"
31
- />
32
- </template>
33
-
34
- <script setup lang="ts">
35
- import type { UI_I_NavigationItem } from '~/components/common/mainNavigationPanel/lib/models/interfaces'
36
- import type { UI_T_ParentStatus } from '~/components/common/mainNavigationPanel/lib/models/types'
37
-
38
- const props = withDefaults(
39
- defineProps<{
40
- mainMenuStatus: boolean
41
- navigationItems: UI_I_NavigationItem[][]
42
- parentStatus: UI_T_ParentStatus
43
- disabledPin: boolean
44
- isNewView?: boolean
45
- }>(),
46
- {
47
- isNewView: false,
48
- }
49
- )
50
-
51
- const emits = defineEmits<{
52
- (event: 'toggle', value: boolean): void
53
- }>()
54
-
55
- const { $store }: any = useNuxtApp()
56
-
57
- const route = useRoute()
58
-
59
- const showMenu = computed<boolean>(
60
- () => props.mainMenuStatus || menuPined.value
61
- )
62
-
63
- const menuPined = ref<boolean>(false)
64
- const changeMenuPin = (): void => {
65
- useLocalStorage('menuPined', menuPined.value)
66
- }
67
- const setMenuPined = (): void => {
68
- menuPined.value = props.disabledPin ? false : !!useLocalStorage('menuPined')
69
- }
70
- watch(
71
- () => props.disabledPin,
72
- () => {
73
- setMenuPined()
74
- },
75
- { immediate: true }
76
- )
77
-
78
- const menuCollapsed = ref<boolean>(false)
79
- const collapseMenu = (): void => {
80
- menuCollapsed.value = !menuCollapsed.value
81
- useLocalStorage('menuCollapsed', menuCollapsed.value)
82
- }
83
-
84
- const mainMenuHovered = ref<boolean>(false)
85
-
86
- const clickWindow = (event: Event): void => {
87
- const target = event.target as any
88
- if (
89
- menuPined.value ||
90
- mainMenuHovered.value ||
91
- target.className.baseVal?.includes('menu-icon') ||
92
- target.className.baseVal?.includes('clr-i-outline')
93
- ) {
94
- return
95
- }
96
-
97
- emits('toggle', false)
98
- }
99
-
100
- const mountedReady = ref<boolean>(false)
101
- onMounted(() => {
102
- mountedReady.value = true
103
- window.addEventListener('click', clickWindow)
104
- })
105
-
106
- onUnmounted(() => {
107
- window.removeEventListener('click', clickWindow)
108
- })
109
-
110
- watch(
111
- [mountedReady, (): any => route.fullPath, (): any => props.parentStatus],
112
- ([newValue1, newValue2, newValue3]: [
113
- boolean,
114
- any,
115
- UI_T_ParentStatus
116
- ]): void => {
117
- if (newValue3 === 1) return
118
-
119
- const name = location.pathname.split('/')[1]
120
-
121
- if (!newValue1 || name === 'auth') return
122
-
123
- setSidebarOptions()
124
- useLocalStorage('navigationHistoryRoute', newValue2)
125
- },
126
- { immediate: true, deep: true }
127
- )
128
-
129
- const setSidebarOptions = (): void => {
130
- setMenuPined()
131
- menuCollapsed.value = !!useLocalStorage('menuCollapsed')
132
-
133
- if (menuPined.value) {
134
- emits('toggle', true)
135
- }
136
- }
137
-
138
- const hideMainMenu = (): void => {
139
- if (menuPined.value) return
140
- emits('toggle', false)
141
- }
142
-
143
- watch(
144
- menuPined,
145
- (newValue) => {
146
- $store.dispatch('main/A_MENU_PINED', newValue)
147
- },
148
- { immediate: true }
149
- )
150
- </script>
151
-
152
- <style scoped lang="scss"></style>
1
+ <template>
2
+ <common-main-navigation-panel-new
3
+ v-if="props.isNewView"
4
+ v-model:main-menu-hovered="mainMenuHovered"
5
+ v-model:menu-pined="menuPined"
6
+ :main-menu-status="props.mainMenuStatus"
7
+ :navigation-items="props.navigationItems"
8
+ :parent-status="props.parentStatus"
9
+ :disabled-pin="props.disabledPin"
10
+ :menu-collapsed="menuCollapsed"
11
+ :show-menu="showMenu"
12
+ @toggle="emits('toggle', $event)"
13
+ @collapse-menu="collapseMenu"
14
+ @change-menu-pin="changeMenuPin"
15
+ @hide-main-menu="hideMainMenu"
16
+ />
17
+ <common-main-navigation-panel-old
18
+ v-else
19
+ v-model:main-menu-hovered="mainMenuHovered"
20
+ v-model:menu-pined="menuPined"
21
+ :main-menu-status="props.mainMenuStatus"
22
+ :navigation-items="props.navigationItems"
23
+ :parent-status="props.parentStatus"
24
+ :disabled-pin="props.disabledPin"
25
+ :menu-collapsed="menuCollapsed"
26
+ :show-menu="showMenu"
27
+ @toggle="emits('toggle', $event)"
28
+ @collapse-menu="collapseMenu"
29
+ @change-menu-pin="changeMenuPin"
30
+ @hide-main-menu="hideMainMenu"
31
+ />
32
+ </template>
33
+
34
+ <script setup lang="ts">
35
+ import type { UI_I_NavigationItem } from '~/components/common/mainNavigationPanel/lib/models/interfaces'
36
+ import type { UI_T_ParentStatus } from '~/components/common/mainNavigationPanel/lib/models/types'
37
+
38
+ const props = withDefaults(
39
+ defineProps<{
40
+ mainMenuStatus: boolean
41
+ navigationItems: UI_I_NavigationItem[][]
42
+ parentStatus: UI_T_ParentStatus
43
+ disabledPin: boolean
44
+ isNewView?: boolean
45
+ }>(),
46
+ {
47
+ isNewView: false,
48
+ }
49
+ )
50
+
51
+ const emits = defineEmits<{
52
+ (event: 'toggle', value: boolean): void
53
+ }>()
54
+
55
+ const { $store }: any = useNuxtApp()
56
+
57
+ const route = useRoute()
58
+
59
+ const showMenu = computed<boolean>(
60
+ () => props.mainMenuStatus || menuPined.value
61
+ )
62
+
63
+ const menuPined = ref<boolean>(false)
64
+ const changeMenuPin = (): void => {
65
+ useLocalStorage('menuPined', menuPined.value)
66
+ }
67
+ const setMenuPined = (): void => {
68
+ menuPined.value = props.disabledPin ? false : !!useLocalStorage('menuPined')
69
+ }
70
+ watch(
71
+ () => props.disabledPin,
72
+ () => {
73
+ setMenuPined()
74
+ },
75
+ { immediate: true }
76
+ )
77
+
78
+ const menuCollapsed = ref<boolean>(false)
79
+ const collapseMenu = (): void => {
80
+ menuCollapsed.value = !menuCollapsed.value
81
+ useLocalStorage('menuCollapsed', menuCollapsed.value)
82
+ }
83
+
84
+ const mainMenuHovered = ref<boolean>(false)
85
+
86
+ const clickWindow = (event: Event): void => {
87
+ const target = event.target as any
88
+ if (
89
+ menuPined.value ||
90
+ mainMenuHovered.value ||
91
+ target.className.baseVal?.includes('menu-icon') ||
92
+ target.className.baseVal?.includes('clr-i-outline')
93
+ ) {
94
+ return
95
+ }
96
+
97
+ emits('toggle', false)
98
+ }
99
+
100
+ const mountedReady = ref<boolean>(false)
101
+ onMounted(() => {
102
+ mountedReady.value = true
103
+ window.addEventListener('click', clickWindow)
104
+ })
105
+
106
+ onUnmounted(() => {
107
+ window.removeEventListener('click', clickWindow)
108
+ })
109
+
110
+ watch(
111
+ [mountedReady, (): any => route.fullPath, (): any => props.parentStatus],
112
+ ([newValue1, newValue2, newValue3]: [
113
+ boolean,
114
+ any,
115
+ UI_T_ParentStatus
116
+ ]): void => {
117
+ if (newValue3 === 1) return
118
+
119
+ const name = location.pathname.split('/')[1]
120
+
121
+ if (!newValue1 || name === 'auth') return
122
+
123
+ setSidebarOptions()
124
+ useLocalStorage('navigationHistoryRoute', newValue2)
125
+ },
126
+ { immediate: true, deep: true }
127
+ )
128
+
129
+ const setSidebarOptions = (): void => {
130
+ setMenuPined()
131
+ menuCollapsed.value = !!useLocalStorage('menuCollapsed')
132
+
133
+ if (menuPined.value) {
134
+ emits('toggle', true)
135
+ }
136
+ }
137
+
138
+ const hideMainMenu = (): void => {
139
+ if (menuPined.value) return
140
+ emits('toggle', false)
141
+ }
142
+
143
+ watch(
144
+ menuPined,
145
+ (newValue) => {
146
+ $store.dispatch('main/A_MENU_PINED', newValue)
147
+ },
148
+ { immediate: true }
149
+ )
150
+ </script>
151
+
152
+ <style scoped lang="scss"></style>