bfg-common 1.3.411 → 1.3.412
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.
- package/assets/localization/local_be.json +3 -1
- package/assets/localization/local_en.json +2385 -2383
- package/assets/localization/local_hy.json +3 -1
- package/assets/localization/local_kk.json +3 -1
- package/assets/localization/local_ru.json +3 -1
- package/assets/localization/local_zh.json +3 -1
- package/components/common/mainNavigationPanel/MainNavigationPanel.vue +38 -363
- package/components/common/mainNavigationPanel/MainNavigationPanelNew.vue +373 -0
- package/components/common/mainNavigationPanel/MainNavigationPanelOld.vue +363 -0
- package/package.json +1 -1
|
@@ -2379,5 +2379,7 @@
|
|
|
2379
2379
|
"deleteBackupDescription": "Ցանկանու՞մ եք հեռացնել կրկնօրինակը:",
|
|
2380
2380
|
"removeDatastoreDescription": "Ցանկանու՞մ եք հեռացնել տվյալների պահեստը:",
|
|
2381
2381
|
"useUnidirectionalChap": "Օգտագործեք միակողմանի CHAP",
|
|
2382
|
-
"useBiderectionalChap": "Օգտագործեք երկու ուղղիչ CHAP"
|
|
2382
|
+
"useBiderectionalChap": "Օգտագործեք երկու ուղղիչ CHAP",
|
|
2383
|
+
"usernameIsRequired": "Օգտվողի անունը պարտադիր է",
|
|
2384
|
+
"passwordIsRequired": "Գաղտնաբառը պարտադիր է"
|
|
2383
2385
|
}
|
|
@@ -2378,5 +2378,7 @@
|
|
|
2378
2378
|
"deleteBackupDescription": "Сақтық көшірмені жойғыңыз келе ме?",
|
|
2379
2379
|
"removeDatastoreDescription": "Деректер қоймасын жойғыңыз келе ме?",
|
|
2380
2380
|
"useUnidirectionalChap": "Бір бағытты CHAP пайдаланыңыз",
|
|
2381
|
-
"useBiderectionalChap": "Екі жақты CHAP пайдаланыңыз"
|
|
2381
|
+
"useBiderectionalChap": "Екі жақты CHAP пайдаланыңыз",
|
|
2382
|
+
"usernameIsRequired": "Пайдаланушы аты қажет",
|
|
2383
|
+
"passwordIsRequired": "Құпия сөз қажет"
|
|
2382
2384
|
}
|
|
@@ -2384,5 +2384,7 @@
|
|
|
2384
2384
|
"deleteBackupDescription": "Вы хотите удалить резервную копию?",
|
|
2385
2385
|
"removeDatastoreDescription": "Вы хотите удалить хранилище данных?",
|
|
2386
2386
|
"useUnidirectionalChap": "Используйте однонаправленный CHAP",
|
|
2387
|
-
"useBiderectionalChap": "Используйте двунаправленный CHAP"
|
|
2387
|
+
"useBiderectionalChap": "Используйте двунаправленный CHAP",
|
|
2388
|
+
"usernameIsRequired": "Требуется имя пользователя",
|
|
2389
|
+
"passwordIsRequired": "Требуется пароль"
|
|
2388
2390
|
}
|
|
@@ -2378,5 +2378,7 @@
|
|
|
2378
2378
|
"deleteBackupDescription": "您要删除备份吗?",
|
|
2379
2379
|
"removeDatastoreDescription": "您想删除数据存储吗?",
|
|
2380
2380
|
"useUnidirectionalChap": "使用单向 CHAP",
|
|
2381
|
-
"useBiderectionalChap": "使用双向 CHAP"
|
|
2381
|
+
"useBiderectionalChap": "使用双向 CHAP",
|
|
2382
|
+
"usernameIsRequired": "用户名是必需的",
|
|
2383
|
+
"passwordIsRequired": "密码是必需的"
|
|
2382
2384
|
}
|
|
@@ -1,363 +1,38 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
:class="['clr-flex-shrink-0 category-icon', item2.iconName]"
|
|
40
|
-
/>
|
|
41
|
-
<span class="category-text" :title="item2.title">{{
|
|
42
|
-
item2.title
|
|
43
|
-
}}</span>
|
|
44
|
-
</span>
|
|
45
|
-
</nuxt-link>
|
|
46
|
-
<div
|
|
47
|
-
v-show="key !== navigationItems.length - 1"
|
|
48
|
-
class="nav-divider"
|
|
49
|
-
/>
|
|
50
|
-
</template>
|
|
51
|
-
</div>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
|
|
55
|
-
<div v-show="!menuCollapsed" class="pin-wrap">
|
|
56
|
-
<div class="clr-checkbox-wrapper">
|
|
57
|
-
<input
|
|
58
|
-
id="pin-menu-control"
|
|
59
|
-
v-model="menuPined"
|
|
60
|
-
data-id="navigation-panel-pin-menu-control"
|
|
61
|
-
type="checkbox"
|
|
62
|
-
:disabled="props.disabledPin"
|
|
63
|
-
@change="changeMenuPin"
|
|
64
|
-
/>
|
|
65
|
-
<label for="pin-menu-control">{{ localization.pinMenu }}</label>
|
|
66
|
-
</div>
|
|
67
|
-
</div>
|
|
68
|
-
</div>
|
|
69
|
-
</div>
|
|
70
|
-
</template>
|
|
71
|
-
|
|
72
|
-
<script setup lang="ts">
|
|
73
|
-
import { UI_I_Localization } from '~/lib/models/interfaces'
|
|
74
|
-
import { UI_I_NavigationItem } from '~/components/common/mainNavigationPanel/lib/models/interfaces'
|
|
75
|
-
import { UI_T_ParentStatus } from '~/components/common/mainNavigationPanel/lib/models/types'
|
|
76
|
-
|
|
77
|
-
const props = defineProps<{
|
|
78
|
-
mainMenuStatus: boolean
|
|
79
|
-
navigationItems: UI_I_NavigationItem[][]
|
|
80
|
-
parentStatus: UI_T_ParentStatus
|
|
81
|
-
disabledPin: boolean
|
|
82
|
-
}>()
|
|
83
|
-
const emits = defineEmits<{
|
|
84
|
-
(event: 'toggle', value: boolean): void
|
|
85
|
-
}>()
|
|
86
|
-
|
|
87
|
-
// const { $store } = useNuxtApp()
|
|
88
|
-
|
|
89
|
-
const localization = computed<UI_I_Localization>(() => useLocal())
|
|
90
|
-
const route = useRoute()
|
|
91
|
-
|
|
92
|
-
const showMenu = computed<boolean>(
|
|
93
|
-
() => props.mainMenuStatus || menuPined.value
|
|
94
|
-
)
|
|
95
|
-
|
|
96
|
-
const menuPined = ref<boolean>(false)
|
|
97
|
-
const changeMenuPin = (): void => {
|
|
98
|
-
useLocalStorage('menuPined', menuPined.value)
|
|
99
|
-
}
|
|
100
|
-
const setMenuPined = (): void => {
|
|
101
|
-
menuPined.value = props.disabledPin ? false : useLocalStorage('menuPined')
|
|
102
|
-
}
|
|
103
|
-
watch(
|
|
104
|
-
() => props.disabledPin,
|
|
105
|
-
() => {
|
|
106
|
-
setMenuPined()
|
|
107
|
-
},
|
|
108
|
-
{ immediate: true }
|
|
109
|
-
)
|
|
110
|
-
|
|
111
|
-
const menuCollapsed = ref<boolean>(false)
|
|
112
|
-
const collapseMenu = (): void => {
|
|
113
|
-
menuCollapsed.value = !menuCollapsed.value
|
|
114
|
-
useLocalStorage('menuCollapsed', menuCollapsed.value)
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const mainMenuHovered = ref<boolean>(false)
|
|
118
|
-
|
|
119
|
-
const clickWindow = (event: Event): void => {
|
|
120
|
-
const target = event.target as any
|
|
121
|
-
if (
|
|
122
|
-
menuPined.value ||
|
|
123
|
-
mainMenuHovered.value ||
|
|
124
|
-
target.className.baseVal?.includes('menu-icon') ||
|
|
125
|
-
target.className.baseVal?.includes('clr-i-outline')
|
|
126
|
-
) {
|
|
127
|
-
return
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
emits('toggle', false)
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
const mountedReady = ref<boolean>(false)
|
|
134
|
-
onMounted(() => {
|
|
135
|
-
mountedReady.value = true
|
|
136
|
-
window.addEventListener('click', clickWindow)
|
|
137
|
-
})
|
|
138
|
-
|
|
139
|
-
onUnmounted(() => {
|
|
140
|
-
window.removeEventListener('click', clickWindow)
|
|
141
|
-
})
|
|
142
|
-
|
|
143
|
-
watch(
|
|
144
|
-
[mountedReady, () => route.fullPath, () => props.parentStatus],
|
|
145
|
-
([mountedReadyNewValue, routeNewValue, parentStatusNewValue]: [
|
|
146
|
-
boolean,
|
|
147
|
-
any,
|
|
148
|
-
UI_T_ParentStatus
|
|
149
|
-
]): void => {
|
|
150
|
-
if (parentStatusNewValue === 1) return
|
|
151
|
-
|
|
152
|
-
const name = location.pathname.split('/')[1]
|
|
153
|
-
|
|
154
|
-
if (!mountedReadyNewValue || name === 'auth') return
|
|
155
|
-
|
|
156
|
-
setSidebarOptions()
|
|
157
|
-
useLocalStorage('navigationHistoryRoute', routeNewValue)
|
|
158
|
-
},
|
|
159
|
-
{ immediate: true, deep: true }
|
|
160
|
-
)
|
|
161
|
-
|
|
162
|
-
const setSidebarOptions = (): void => {
|
|
163
|
-
setMenuPined()
|
|
164
|
-
menuCollapsed.value = useLocalStorage('menuCollapsed')
|
|
165
|
-
|
|
166
|
-
if (menuPined.value) {
|
|
167
|
-
emits('toggle', true)
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
const hideMainMenu = (): void => {
|
|
172
|
-
if (menuPined.value) return
|
|
173
|
-
emits('toggle', false)
|
|
174
|
-
}
|
|
175
|
-
</script>
|
|
176
|
-
|
|
177
|
-
<style scoped lang="scss">
|
|
178
|
-
.main-navigation-panel {
|
|
179
|
-
display: flex;
|
|
180
|
-
flex: 1 1 auto;
|
|
181
|
-
&.pinned {
|
|
182
|
-
.nav-context {
|
|
183
|
-
position: relative;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
.nav-context {
|
|
187
|
-
position: absolute;
|
|
188
|
-
z-index: 1001;
|
|
189
|
-
height: 100%;
|
|
190
|
-
display: flex;
|
|
191
|
-
flex-direction: column;
|
|
192
|
-
background-color: var(--vertical-nav-bg-color);
|
|
193
|
-
border-right: 0.05rem solid var(--vertical-border-color);
|
|
194
|
-
&.collapsed {
|
|
195
|
-
.category-wrap .clr-vertical-nav {
|
|
196
|
-
width: 48px;
|
|
197
|
-
.nav-trigger {
|
|
198
|
-
svg {
|
|
199
|
-
transform: rotate(90deg);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
.nav-content {
|
|
203
|
-
overflow-y: hidden;
|
|
204
|
-
|
|
205
|
-
&:hover {
|
|
206
|
-
overflow-y: auto;
|
|
207
|
-
}
|
|
208
|
-
.nav-link {
|
|
209
|
-
display: flex;
|
|
210
|
-
padding: 2px 0.6rem 2px 0.7rem;
|
|
211
|
-
width: fit-content;
|
|
212
|
-
.category-text {
|
|
213
|
-
opacity: 0;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
.nav-trigger {
|
|
220
|
-
margin-top: 0;
|
|
221
|
-
outline: none;
|
|
222
|
-
.nav-trigger-icon {
|
|
223
|
-
height: 16px;
|
|
224
|
-
svg {
|
|
225
|
-
fill: var(--arrows-icon);
|
|
226
|
-
width: 16px;
|
|
227
|
-
height: 16px;
|
|
228
|
-
transform: rotate(-90deg);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
.category-wrap {
|
|
233
|
-
overflow: hidden;
|
|
234
|
-
flex: 1 1 auto;
|
|
235
|
-
.clr-vertical-nav {
|
|
236
|
-
padding-top: 0;
|
|
237
|
-
background: none;
|
|
238
|
-
width: 100%;
|
|
239
|
-
height: 100%;
|
|
240
|
-
overflow-y: auto;
|
|
241
|
-
}
|
|
242
|
-
.nav-content {
|
|
243
|
-
padding-top: 12px;
|
|
244
|
-
height: 100%;
|
|
245
|
-
.nav-link {
|
|
246
|
-
padding: 2px 12px;
|
|
247
|
-
font-weight: 400;
|
|
248
|
-
height: auto;
|
|
249
|
-
line-height: 21px;
|
|
250
|
-
flex-basis: auto;
|
|
251
|
-
&.active {
|
|
252
|
-
background-color: var(--row-selected-bg-color);
|
|
253
|
-
border-bottom: 1px solid transparent;
|
|
254
|
-
.nav-text {
|
|
255
|
-
.category-icon {
|
|
256
|
-
&.icon-lifecycle-manager {
|
|
257
|
-
background-image: url('assets/img/icons/icon-life-m-light.svg');
|
|
258
|
-
|
|
259
|
-
html.dark-theme & {
|
|
260
|
-
background-image: url('assets/img/icons/icon-life-m-dark.svg');
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
&.icon-realize-operations {
|
|
264
|
-
background-image: url('assets/img/icons/icon-ro-light.svg');
|
|
265
|
-
html.dark-theme & {
|
|
266
|
-
background-image: url('assets/img/icons/icon-ro-dark.svg');
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
.category-text {
|
|
271
|
-
color: var(--vertical-nav-active-item-color);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
&:hover:not(.active) {
|
|
277
|
-
margin-bottom: -1px;
|
|
278
|
-
border-bottom: 1px solid var(--row-hover-border-color);
|
|
279
|
-
background-color: var(--row-hover-bg-color);
|
|
280
|
-
color: #454545;
|
|
281
|
-
}
|
|
282
|
-
.nav-text {
|
|
283
|
-
display: flex;
|
|
284
|
-
.category-icon {
|
|
285
|
-
margin: 1px 4px 0 0;
|
|
286
|
-
min-width: 16px;
|
|
287
|
-
display: inline-block;
|
|
288
|
-
&.icon-hybrid-cloud-services {
|
|
289
|
-
background: url('assets/img/icons/icon-hcs.svg');
|
|
290
|
-
width: 16px;
|
|
291
|
-
height: 16px;
|
|
292
|
-
min-height: 16px;
|
|
293
|
-
}
|
|
294
|
-
&.icon-realize-operations,
|
|
295
|
-
&.icon-cloud-provider-services,
|
|
296
|
-
&.icon-lifecycle-manager {
|
|
297
|
-
background-size: contain;
|
|
298
|
-
background-repeat: no-repeat;
|
|
299
|
-
width: 18px;
|
|
300
|
-
height: 18px;
|
|
301
|
-
display: inline-block;
|
|
302
|
-
vertical-align: text-bottom;
|
|
303
|
-
}
|
|
304
|
-
&.icon-lifecycle-manager {
|
|
305
|
-
background-image: url('assets/img/icons/icon-life-m-light.svg');
|
|
306
|
-
html.dark-theme & {
|
|
307
|
-
background-image: url('assets/img/icons/icon-life-m-dark.svg');
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
&.icon-cloud-provider-services {
|
|
311
|
-
background-image: url('assets/img/icons/icon-cps.png');
|
|
312
|
-
html.dark-theme & {
|
|
313
|
-
background-image: url('assets/img/icons/icon-cps-dark-mode.png');
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
&.icon-realize-operations {
|
|
317
|
-
background-image: url('assets/img/icons/icon-ro-light.svg');
|
|
318
|
-
html.dark-theme & {
|
|
319
|
-
background-image: url('assets/img/icons/icon-ro-dark.svg');
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
.category-text {
|
|
324
|
-
white-space: nowrap;
|
|
325
|
-
overflow: hidden;
|
|
326
|
-
text-overflow: ellipsis;
|
|
327
|
-
font-size: 13px;
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
.pin-wrap {
|
|
334
|
-
padding: 6px 4px 5px 12px;
|
|
335
|
-
border-top: 0.05rem solid var(--vertical-nav-divider-border-color);
|
|
336
|
-
label {
|
|
337
|
-
font-size: 13px;
|
|
338
|
-
}
|
|
339
|
-
input[disabled] + label {
|
|
340
|
-
cursor: not-allowed;
|
|
341
|
-
opacity: 0.5;
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
</style>
|
|
347
|
-
|
|
348
|
-
<style>
|
|
349
|
-
:root {
|
|
350
|
-
--vertical-nav-bg-color: rgba(232, 232, 232, 0.85);
|
|
351
|
-
--vertical-nav-item-color: #565656;
|
|
352
|
-
--vertical-nav-active-item-color: #fff;
|
|
353
|
-
--vertical-nav-divider-border-color: #ccc;
|
|
354
|
-
--vertical-border-color: tranparent;
|
|
355
|
-
}
|
|
356
|
-
:root.dark-theme {
|
|
357
|
-
--vertical-nav-bg-color: #17242b;
|
|
358
|
-
--vertical-nav-item-color: #e9ecef;
|
|
359
|
-
--vertical-nav-active-item-color: #000;
|
|
360
|
-
--vertical-nav-divider-border-color: #495865;
|
|
361
|
-
--vertical-border-color: #495865;
|
|
362
|
-
}
|
|
363
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<common-main-navigation-panel-new
|
|
3
|
+
v-if="props.isNewView"
|
|
4
|
+
:main-menu-status="props.mainMenuStatus"
|
|
5
|
+
:navigation-items="props.navigationItems"
|
|
6
|
+
:parent-status="props.parentStatus"
|
|
7
|
+
:disabled-pin="props.disabledPin"
|
|
8
|
+
/>
|
|
9
|
+
<common-main-navigation-panel-old
|
|
10
|
+
:main-menu-status="props.mainMenuStatus"
|
|
11
|
+
:navigation-items="props.navigationItems"
|
|
12
|
+
:parent-status="props.parentStatus"
|
|
13
|
+
:disabled-pin="props.disabledPin"
|
|
14
|
+
/>
|
|
15
|
+
</template>
|
|
16
|
+
|
|
17
|
+
<script setup lang="ts">
|
|
18
|
+
import type { UI_I_NavigationItem } from '~/components/common/mainNavigationPanel/lib/models/interfaces'
|
|
19
|
+
import type { UI_T_ParentStatus } from '~/components/common/mainNavigationPanel/lib/models/types'
|
|
20
|
+
|
|
21
|
+
const props = withDefaults(
|
|
22
|
+
defineProps<{
|
|
23
|
+
mainMenuStatus: boolean
|
|
24
|
+
navigationItems: UI_I_NavigationItem[][]
|
|
25
|
+
parentStatus: UI_T_ParentStatus
|
|
26
|
+
disabledPin: boolean
|
|
27
|
+
isNewView?: boolean
|
|
28
|
+
}>(),
|
|
29
|
+
{
|
|
30
|
+
isNewView: false,
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
const emits = defineEmits<{
|
|
34
|
+
(event: 'toggle', value: boolean): void
|
|
35
|
+
}>()
|
|
36
|
+
</script>
|
|
37
|
+
|
|
38
|
+
<style scoped lang="scss"></style>
|