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.
@@ -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
- <div
3
- :class="['main-navigation-panel', { pinned: menuPined }]"
4
- @mouseenter="mainMenuHovered = true"
5
- @mouseleave="mainMenuHovered = false"
6
- >
7
- <div
8
- v-show="showMenu"
9
- :class="['nav-context', { collapsed: menuCollapsed }]"
10
- >
11
- <div class="category-wrap">
12
- <div class="clr-vertical-nav">
13
- <button
14
- v-if="menuPined"
15
- id="nav-trigger"
16
- data-id="navigation-panel-trigger"
17
- class="nav-trigger"
18
- @click="collapseMenu"
19
- >
20
- <span class="nav-trigger-icon">
21
- <atoms-the-icon name="doubleArrows" />
22
- </span>
23
- </button>
24
- <div class="nav-content">
25
- <template v-for="(item, key) in navigationItems" :key="key">
26
- <nuxt-link
27
- v-for="(item2, key2) in item"
28
- :id="`nav-item-${key}-${key2}`"
29
- :key="item2.id"
30
- :data-id="item2.testId"
31
- class="nav-link"
32
- active-class="active"
33
- :to="item2.to"
34
- :title="item2.title"
35
- @click="hideMainMenu"
36
- >
37
- <span class="nav-text">
38
- <span
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>