bfg-common 1.2.19 → 1.2.21

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 (75) hide show
  1. package/components/atoms/alert/Notification.vue +167 -167
  2. package/components/atoms/autocomplete/Autocomplete.vue +236 -236
  3. package/components/atoms/datepicker/Datepicker.vue +612 -612
  4. package/components/atoms/list/SelectList.vue +62 -62
  5. package/components/atoms/nav/NavBar.vue +116 -116
  6. package/components/atoms/nav/VerticalNavBar.vue +89 -89
  7. package/components/atoms/notificationBar/NotificationBar.vue +175 -175
  8. package/components/atoms/perPage/PerPage.vue +52 -52
  9. package/components/atoms/popup/SimplePopup.vue +90 -90
  10. package/components/atoms/step/VerticalStep.vue +104 -104
  11. package/components/atoms/switch/Switch.vue +107 -107
  12. package/components/atoms/table/dataGrid/DataGridColumnSwitch.vue +206 -206
  13. package/components/atoms/table/dataGrid/DataGridPage.vue +189 -189
  14. package/components/atoms/tabs/Tabs.vue +189 -189
  15. package/components/atoms/tooltip/Signpost.vue +224 -224
  16. package/components/common/BadBrowser.vue +58 -0
  17. package/components/common/adapterManager/AddAdapterWarningModal.vue +82 -82
  18. package/components/common/adapterManager/NoActiveAdaptersModal.vue +62 -62
  19. package/components/common/adapterManager/NoConnectedActiveAdaptersModal.vue +62 -62
  20. package/components/common/browse/Browse.vue +182 -182
  21. package/components/common/browse/blocks/Title.vue +66 -66
  22. package/components/common/diagramMain/Diagram.vue +186 -186
  23. package/components/common/diagramMain/DiagramMain.vue +986 -986
  24. package/components/common/diagramMain/adapter/AdapterItem.vue +227 -227
  25. package/components/common/diagramMain/adapter/AdapterItems.vue +57 -57
  26. package/components/common/diagramMain/modals/editSettings/tabs/port/IpvFourSettings.vue +339 -339
  27. package/components/common/diagramMain/modals/editSettings/tabs/port/PortProperties.vue +202 -202
  28. package/components/common/diagramMain/modals/remove/RemoveModal.vue +226 -226
  29. package/components/common/diagramMain/network/Contents.vue +238 -238
  30. package/components/common/feedback/Buttons.vue +232 -232
  31. package/components/common/feedback/Message.vue +468 -468
  32. package/components/common/feedback/VisitPortal.vue +54 -54
  33. package/components/common/help/navbar/left/Left.vue +159 -159
  34. package/components/common/help/navbar/left/utils/constructAccordion.ts +27 -27
  35. package/components/common/mainNavigationPanel/MainNavigationPanel.vue +359 -359
  36. package/components/common/modals/Rename.vue +165 -165
  37. package/components/common/perPage/PerPage.vue +51 -51
  38. package/components/common/recursionTree/RecursionTree.vue +201 -201
  39. package/components/common/vm/actions/add/config/capabilities.ts +338 -338
  40. package/components/common/vm/actions/add/customizeHardware/virtualHardware/VirtualHardware.vue +657 -657
  41. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/CoresPerSocket.vue +109 -109
  42. package/components/common/vm/actions/add/customizeHardware/virtualHardware/cpu/Cpu.vue +383 -383
  43. package/components/common/vm/actions/add/customizeHardware/virtualHardware/limit/Limit.vue +234 -234
  44. package/components/common/vm/actions/add/customizeHardware/virtualHardware/limit/config/options.ts +28 -28
  45. package/components/common/vm/actions/add/customizeHardware/virtualHardware/memory/Memory.vue +316 -316
  46. package/components/common/vm/actions/add/customizeHardware/virtualHardware/memory/config/memoryOptions.ts +35 -35
  47. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newHardDisk/NewHardDisk.vue +445 -445
  48. package/components/common/vm/actions/add/customizeHardware/virtualHardware/newNetwork/NewNetwork.vue +288 -288
  49. package/components/common/vm/actions/add/customizeHardware/virtualHardware/reservation/Reservation.vue +235 -235
  50. package/components/common/vm/actions/add/customizeHardware/virtualHardware/videoCard/VideoCard.vue +177 -177
  51. package/components/common/vm/actions/add/customizeHardware/vmoptions/bootOptions/order/Order.vue +197 -197
  52. package/components/common/vm/actions/add/customizeHardware/vmoptions/generalOptions/GeneralOptions.vue +181 -181
  53. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/CopyPaste.vue +51 -51
  54. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/RemoteConsoleOptions.vue +253 -253
  55. package/components/common/vm/actions/add/customizeHardware/vmoptions/remoteConsoleOptions/keymap/Keymap.vue +55 -55
  56. package/components/common/vm/actions/add/select/storage/config/config.ts +154 -154
  57. package/components/common/vm/actions/clone/Clone.vue +544 -544
  58. package/components/common/vm/actions/clone/select/options/Options.vue +65 -65
  59. package/components/common/vm/actions/clone/utils.ts +43 -43
  60. package/components/common/wizards/datastore/add/nfs/configuration/Configuration.vue +373 -373
  61. package/components/common/wizards/datastore/add/nfs/configuration/serversList/ServersList.vue +123 -123
  62. package/components/common/wizards/datastore/add/nfs/kerberosAuthentication/KerberosAuthentication.vue +54 -54
  63. package/components/common/wizards/datastore/add/sharedStorm/deviceSelection/hostTable/HostTable.vue +131 -131
  64. package/components/common/wizards/datastore/add/sharedStorm/partitionConfiguration/PartitionConfiguration.vue +230 -230
  65. package/composables/useLocal.ts +38 -38
  66. package/minify.js +146 -146
  67. package/models/store/interfaces.ts +37 -37
  68. package/models/store/storage/interfaces.ts +32 -32
  69. package/models/store/types.ts +32 -32
  70. package/modules/fixContentBuild/utils/methods.ts +114 -114
  71. package/package.json +1 -1
  72. package/public/spice-console/application/codec.js +257 -257
  73. package/public/spice-console/lib/rasterEngine.js +907 -907
  74. package/public/spice-console/network/spicechannel.js +369 -369
  75. package/utils/contentBuild.ts +34 -34
@@ -1,359 +1,359 @@
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
- class="nav-trigger"
17
- @click="collapseMenu"
18
- >
19
- <span class="nav-trigger-icon">
20
- <atoms-the-icon name="doubleArrows" />
21
- </span>
22
- </button>
23
- <div class="nav-content">
24
- <template v-for="(item, key) in navigationItems" :key="key">
25
- <nuxt-link
26
- v-for="(item2, key2) in item"
27
- :id="`nav-item-${key}-${key2}`"
28
- :key="item2.id"
29
- class="nav-link"
30
- active-class="active"
31
- :to="item2.to"
32
- :title="item2.title"
33
- @click="hideMainMenu"
34
- >
35
- <span class="nav-text">
36
- <span
37
- :class="['clr-flex-shrink-0 category-icon', item2.iconName]"
38
- />
39
- <span class="category-text" :title="item2.title">{{
40
- item2.title
41
- }}</span>
42
- </span>
43
- </nuxt-link>
44
- <div
45
- v-show="key !== navigationItems.length - 1"
46
- class="nav-divider"
47
- />
48
- </template>
49
- </div>
50
- </div>
51
- </div>
52
-
53
- <div v-show="!menuCollapsed" class="pin-wrap">
54
- <div class="clr-checkbox-wrapper">
55
- <input
56
- id="pin-menu-control"
57
- v-model="menuPined"
58
- type="checkbox"
59
- :disabled="props.disabledPin"
60
- @change="changeMenuPin"
61
- />
62
- <label for="pin-menu-control">{{ localization.pinMenu }}</label>
63
- </div>
64
- </div>
65
- </div>
66
- </div>
67
- </template>
68
-
69
- <script setup lang="ts">
70
- import { UI_I_Localization } from '~/models/interfaces'
71
- import { UI_I_NavigationItem } from '~/components/common/mainNavigationPanel/models/interfaces'
72
- import { UI_T_ParentStatus } from '~/components/common/mainNavigationPanel/models/types'
73
-
74
- const props = defineProps<{
75
- mainMenuStatus: boolean
76
- navigationItems: UI_I_NavigationItem[][]
77
- parentStatus: UI_T_ParentStatus
78
- disabledPin: boolean
79
- }>()
80
- const emits = defineEmits<{
81
- (event: 'toggle', value: boolean): void
82
- }>()
83
-
84
- const { $store } = useNuxtApp()
85
-
86
- const localization = computed<UI_I_Localization>(() => useLocal())
87
- const route = useRoute()
88
-
89
- const showMenu = computed<boolean>(
90
- () => props.mainMenuStatus || menuPined.value
91
- )
92
-
93
- const menuPined = ref<boolean>(false)
94
- const changeMenuPin = (): void => {
95
- useLocalStorage('menuPined', menuPined.value)
96
- }
97
- const setMenuPined = (): void => {
98
- menuPined.value = props.disabledPin ? false : useLocalStorage('menuPined')
99
- }
100
- watch(
101
- () => props.disabledPin,
102
- () => {
103
- setMenuPined()
104
- },
105
- { immediate: true }
106
- )
107
-
108
- const menuCollapsed = ref<boolean>(false)
109
- const collapseMenu = (): void => {
110
- menuCollapsed.value = !menuCollapsed.value
111
- useLocalStorage('menuCollapsed', menuCollapsed.value)
112
- }
113
-
114
- const mainMenuHovered = ref<boolean>(false)
115
-
116
- const clickWindow = (event: Event): void => {
117
- const target = event.target as any
118
- if (
119
- menuPined.value ||
120
- mainMenuHovered.value ||
121
- target.className.baseVal?.includes('menu-icon') ||
122
- target.className.baseVal?.includes('clr-i-outline')
123
- ) {
124
- return
125
- }
126
-
127
- emits('toggle', false)
128
- }
129
-
130
- const mountedReady = ref<boolean>(false)
131
- onMounted(() => {
132
- mountedReady.value = true
133
- window.addEventListener('click', clickWindow)
134
- })
135
-
136
- onUnmounted(() => {
137
- window.removeEventListener('click', clickWindow)
138
- })
139
-
140
- watch(
141
- [mountedReady, route, () => props.parentStatus],
142
- ([mountedReadyNewValue, routeNewValue, parentStatusNewValue]: [
143
- boolean,
144
- any,
145
- UI_T_ParentStatus
146
- ]): void => {
147
- if (parentStatusNewValue === 1) return
148
-
149
- const name = location.pathname.split('/')[1]
150
-
151
- if (!mountedReadyNewValue || name === 'auth') return
152
-
153
- setSidebarOptions()
154
- useLocalStorage('navigationHistoryRoute', routeNewValue.fullPath)
155
- },
156
- { immediate: true, deep: true }
157
- )
158
-
159
- const setSidebarOptions = (): void => {
160
- setMenuPined()
161
- menuCollapsed.value = useLocalStorage('menuCollapsed')
162
-
163
- if (menuPined.value) {
164
- emits('toggle', true)
165
- }
166
- }
167
-
168
- const hideMainMenu = (): void => {
169
- emits('toggle', false)
170
- }
171
- </script>
172
-
173
- <style scoped lang="scss">
174
- .main-navigation-panel {
175
- display: flex;
176
- flex: 1 1 auto;
177
- &.pinned {
178
- .nav-context {
179
- position: relative;
180
- }
181
- }
182
- .nav-context {
183
- position: absolute;
184
- z-index: 1001;
185
- height: 100%;
186
- display: flex;
187
- flex-direction: column;
188
- background-color: var(--vertical-nav-bg-color);
189
- border-right: 0.05rem solid var(--vertical-border-color);
190
- &.collapsed {
191
- .category-wrap .clr-vertical-nav {
192
- width: 48px;
193
- .nav-trigger {
194
- svg {
195
- transform: rotate(90deg);
196
- }
197
- }
198
- .nav-content {
199
- overflow-y: hidden;
200
-
201
- &:hover {
202
- overflow-y: auto;
203
- }
204
- .nav-link {
205
- display: flex;
206
- padding: 2px 0.6rem 2px 0.7rem;
207
- width: fit-content;
208
- .category-text {
209
- opacity: 0;
210
- }
211
- }
212
- }
213
- }
214
- }
215
- .nav-trigger {
216
- margin-top: 0;
217
- outline: none;
218
- .nav-trigger-icon {
219
- height: 16px;
220
- svg {
221
- fill: var(--arrows-icon);
222
- width: 16px;
223
- height: 16px;
224
- transform: rotate(-90deg);
225
- }
226
- }
227
- }
228
- .category-wrap {
229
- overflow: hidden;
230
- flex: 1 1 auto;
231
- .clr-vertical-nav {
232
- padding-top: 0;
233
- background: none;
234
- width: 100%;
235
- height: 100%;
236
- overflow-y: auto;
237
- }
238
- .nav-content {
239
- padding-top: 12px;
240
- height: 100%;
241
- .nav-link {
242
- padding: 2px 12px;
243
- font-weight: 400;
244
- height: auto;
245
- line-height: 21px;
246
- flex-basis: auto;
247
- &.active {
248
- background-color: var(--row-selected-bg-color);
249
- border-bottom: 1px solid transparent;
250
- .nav-text {
251
- .category-icon {
252
- &.icon-lifecycle-manager {
253
- background-image: url('assets/img/icons/icon-life-m-light.svg');
254
-
255
- html.dark-theme & {
256
- background-image: url('assets/img/icons/icon-life-m-dark.svg');
257
- }
258
- }
259
- &.icon-realize-operations {
260
- background-image: url('assets/img/icons/icon-ro-light.svg');
261
- html.dark-theme & {
262
- background-image: url('assets/img/icons/icon-ro-dark.svg');
263
- }
264
- }
265
- }
266
- .category-text {
267
- color: var(--vertical-nav-active-item-color);
268
- }
269
- }
270
- }
271
-
272
- &:hover:not(.active) {
273
- margin-bottom: -1px;
274
- border-bottom: 1px solid var(--row-hover-border-color);
275
- background-color: var(--row-hover-bg-color);
276
- color: #454545;
277
- }
278
- .nav-text {
279
- display: flex;
280
- .category-icon {
281
- margin: 1px 4px 0 0;
282
- min-width: 16px;
283
- display: inline-block;
284
- &.icon-hybrid-cloud-services {
285
- background: url('assets/img/icons/icon-hcs.svg');
286
- width: 16px;
287
- height: 16px;
288
- min-height: 16px;
289
- }
290
- &.icon-realize-operations,
291
- &.icon-cloud-provider-services,
292
- &.icon-lifecycle-manager {
293
- background-size: contain;
294
- background-repeat: no-repeat;
295
- width: 18px;
296
- height: 18px;
297
- display: inline-block;
298
- vertical-align: text-bottom;
299
- }
300
- &.icon-lifecycle-manager {
301
- background-image: url('assets/img/icons/icon-life-m-light.svg');
302
- html.dark-theme & {
303
- background-image: url('assets/img/icons/icon-life-m-dark.svg');
304
- }
305
- }
306
- &.icon-cloud-provider-services {
307
- background-image: url('assets/img/icons/icon-cps.png');
308
- html.dark-theme & {
309
- background-image: url('assets/img/icons/icon-cps-dark-mode.png');
310
- }
311
- }
312
- &.icon-realize-operations {
313
- background-image: url('assets/img/icons/icon-ro-light.svg');
314
- html.dark-theme & {
315
- background-image: url('assets/img/icons/icon-ro-dark.svg');
316
- }
317
- }
318
- }
319
- .category-text {
320
- white-space: nowrap;
321
- overflow: hidden;
322
- text-overflow: ellipsis;
323
- font-size: 13px;
324
- }
325
- }
326
- }
327
- }
328
- }
329
- .pin-wrap {
330
- padding: 6px 4px 5px 12px;
331
- border-top: 0.05rem solid var(--vertical-nav-divider-border-color);
332
- label {
333
- font-size: 13px;
334
- }
335
- input[disabled] + label {
336
- cursor: not-allowed;
337
- opacity: .5;
338
- }
339
- }
340
- }
341
- }
342
- </style>
343
-
344
- <style>
345
- :root {
346
- --vertical-nav-bg-color: rgba(232, 232, 232, 0.85);
347
- --vertical-nav-item-color: #565656;
348
- --vertical-nav-active-item-color: #fff;
349
- --vertical-nav-divider-border-color: #ccc;
350
- --vertical-border-color: tranparent;
351
- }
352
- :root.dark-theme {
353
- --vertical-nav-bg-color: #17242b;
354
- --vertical-nav-item-color: #e9ecef;
355
- --vertical-nav-active-item-color: #000;
356
- --vertical-nav-divider-border-color: #495865;
357
- --vertical-border-color: #495865;
358
- }
359
- </style>
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
+ class="nav-trigger"
17
+ @click="collapseMenu"
18
+ >
19
+ <span class="nav-trigger-icon">
20
+ <atoms-the-icon name="doubleArrows" />
21
+ </span>
22
+ </button>
23
+ <div class="nav-content">
24
+ <template v-for="(item, key) in navigationItems" :key="key">
25
+ <nuxt-link
26
+ v-for="(item2, key2) in item"
27
+ :id="`nav-item-${key}-${key2}`"
28
+ :key="item2.id"
29
+ class="nav-link"
30
+ active-class="active"
31
+ :to="item2.to"
32
+ :title="item2.title"
33
+ @click="hideMainMenu"
34
+ >
35
+ <span class="nav-text">
36
+ <span
37
+ :class="['clr-flex-shrink-0 category-icon', item2.iconName]"
38
+ />
39
+ <span class="category-text" :title="item2.title">{{
40
+ item2.title
41
+ }}</span>
42
+ </span>
43
+ </nuxt-link>
44
+ <div
45
+ v-show="key !== navigationItems.length - 1"
46
+ class="nav-divider"
47
+ />
48
+ </template>
49
+ </div>
50
+ </div>
51
+ </div>
52
+
53
+ <div v-show="!menuCollapsed" class="pin-wrap">
54
+ <div class="clr-checkbox-wrapper">
55
+ <input
56
+ id="pin-menu-control"
57
+ v-model="menuPined"
58
+ type="checkbox"
59
+ :disabled="props.disabledPin"
60
+ @change="changeMenuPin"
61
+ />
62
+ <label for="pin-menu-control">{{ localization.pinMenu }}</label>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </div>
67
+ </template>
68
+
69
+ <script setup lang="ts">
70
+ import { UI_I_Localization } from '~/models/interfaces'
71
+ import { UI_I_NavigationItem } from '~/components/common/mainNavigationPanel/models/interfaces'
72
+ import { UI_T_ParentStatus } from '~/components/common/mainNavigationPanel/models/types'
73
+
74
+ const props = defineProps<{
75
+ mainMenuStatus: boolean
76
+ navigationItems: UI_I_NavigationItem[][]
77
+ parentStatus: UI_T_ParentStatus
78
+ disabledPin: boolean
79
+ }>()
80
+ const emits = defineEmits<{
81
+ (event: 'toggle', value: boolean): void
82
+ }>()
83
+
84
+ const { $store } = useNuxtApp()
85
+
86
+ const localization = computed<UI_I_Localization>(() => useLocal())
87
+ const route = useRoute()
88
+
89
+ const showMenu = computed<boolean>(
90
+ () => props.mainMenuStatus || menuPined.value
91
+ )
92
+
93
+ const menuPined = ref<boolean>(false)
94
+ const changeMenuPin = (): void => {
95
+ useLocalStorage('menuPined', menuPined.value)
96
+ }
97
+ const setMenuPined = (): void => {
98
+ menuPined.value = props.disabledPin ? false : useLocalStorage('menuPined')
99
+ }
100
+ watch(
101
+ () => props.disabledPin,
102
+ () => {
103
+ setMenuPined()
104
+ },
105
+ { immediate: true }
106
+ )
107
+
108
+ const menuCollapsed = ref<boolean>(false)
109
+ const collapseMenu = (): void => {
110
+ menuCollapsed.value = !menuCollapsed.value
111
+ useLocalStorage('menuCollapsed', menuCollapsed.value)
112
+ }
113
+
114
+ const mainMenuHovered = ref<boolean>(false)
115
+
116
+ const clickWindow = (event: Event): void => {
117
+ const target = event.target as any
118
+ if (
119
+ menuPined.value ||
120
+ mainMenuHovered.value ||
121
+ target.className.baseVal?.includes('menu-icon') ||
122
+ target.className.baseVal?.includes('clr-i-outline')
123
+ ) {
124
+ return
125
+ }
126
+
127
+ emits('toggle', false)
128
+ }
129
+
130
+ const mountedReady = ref<boolean>(false)
131
+ onMounted(() => {
132
+ mountedReady.value = true
133
+ window.addEventListener('click', clickWindow)
134
+ })
135
+
136
+ onUnmounted(() => {
137
+ window.removeEventListener('click', clickWindow)
138
+ })
139
+
140
+ watch(
141
+ [mountedReady, route, () => props.parentStatus],
142
+ ([mountedReadyNewValue, routeNewValue, parentStatusNewValue]: [
143
+ boolean,
144
+ any,
145
+ UI_T_ParentStatus
146
+ ]): void => {
147
+ if (parentStatusNewValue === 1) return
148
+
149
+ const name = location.pathname.split('/')[1]
150
+
151
+ if (!mountedReadyNewValue || name === 'auth') return
152
+
153
+ setSidebarOptions()
154
+ useLocalStorage('navigationHistoryRoute', routeNewValue.fullPath)
155
+ },
156
+ { immediate: true, deep: true }
157
+ )
158
+
159
+ const setSidebarOptions = (): void => {
160
+ setMenuPined()
161
+ menuCollapsed.value = useLocalStorage('menuCollapsed')
162
+
163
+ if (menuPined.value) {
164
+ emits('toggle', true)
165
+ }
166
+ }
167
+
168
+ const hideMainMenu = (): void => {
169
+ emits('toggle', false)
170
+ }
171
+ </script>
172
+
173
+ <style scoped lang="scss">
174
+ .main-navigation-panel {
175
+ display: flex;
176
+ flex: 1 1 auto;
177
+ &.pinned {
178
+ .nav-context {
179
+ position: relative;
180
+ }
181
+ }
182
+ .nav-context {
183
+ position: absolute;
184
+ z-index: 1001;
185
+ height: 100%;
186
+ display: flex;
187
+ flex-direction: column;
188
+ background-color: var(--vertical-nav-bg-color);
189
+ border-right: 0.05rem solid var(--vertical-border-color);
190
+ &.collapsed {
191
+ .category-wrap .clr-vertical-nav {
192
+ width: 48px;
193
+ .nav-trigger {
194
+ svg {
195
+ transform: rotate(90deg);
196
+ }
197
+ }
198
+ .nav-content {
199
+ overflow-y: hidden;
200
+
201
+ &:hover {
202
+ overflow-y: auto;
203
+ }
204
+ .nav-link {
205
+ display: flex;
206
+ padding: 2px 0.6rem 2px 0.7rem;
207
+ width: fit-content;
208
+ .category-text {
209
+ opacity: 0;
210
+ }
211
+ }
212
+ }
213
+ }
214
+ }
215
+ .nav-trigger {
216
+ margin-top: 0;
217
+ outline: none;
218
+ .nav-trigger-icon {
219
+ height: 16px;
220
+ svg {
221
+ fill: var(--arrows-icon);
222
+ width: 16px;
223
+ height: 16px;
224
+ transform: rotate(-90deg);
225
+ }
226
+ }
227
+ }
228
+ .category-wrap {
229
+ overflow: hidden;
230
+ flex: 1 1 auto;
231
+ .clr-vertical-nav {
232
+ padding-top: 0;
233
+ background: none;
234
+ width: 100%;
235
+ height: 100%;
236
+ overflow-y: auto;
237
+ }
238
+ .nav-content {
239
+ padding-top: 12px;
240
+ height: 100%;
241
+ .nav-link {
242
+ padding: 2px 12px;
243
+ font-weight: 400;
244
+ height: auto;
245
+ line-height: 21px;
246
+ flex-basis: auto;
247
+ &.active {
248
+ background-color: var(--row-selected-bg-color);
249
+ border-bottom: 1px solid transparent;
250
+ .nav-text {
251
+ .category-icon {
252
+ &.icon-lifecycle-manager {
253
+ background-image: url('assets/img/icons/icon-life-m-light.svg');
254
+
255
+ html.dark-theme & {
256
+ background-image: url('assets/img/icons/icon-life-m-dark.svg');
257
+ }
258
+ }
259
+ &.icon-realize-operations {
260
+ background-image: url('assets/img/icons/icon-ro-light.svg');
261
+ html.dark-theme & {
262
+ background-image: url('assets/img/icons/icon-ro-dark.svg');
263
+ }
264
+ }
265
+ }
266
+ .category-text {
267
+ color: var(--vertical-nav-active-item-color);
268
+ }
269
+ }
270
+ }
271
+
272
+ &:hover:not(.active) {
273
+ margin-bottom: -1px;
274
+ border-bottom: 1px solid var(--row-hover-border-color);
275
+ background-color: var(--row-hover-bg-color);
276
+ color: #454545;
277
+ }
278
+ .nav-text {
279
+ display: flex;
280
+ .category-icon {
281
+ margin: 1px 4px 0 0;
282
+ min-width: 16px;
283
+ display: inline-block;
284
+ &.icon-hybrid-cloud-services {
285
+ background: url('assets/img/icons/icon-hcs.svg');
286
+ width: 16px;
287
+ height: 16px;
288
+ min-height: 16px;
289
+ }
290
+ &.icon-realize-operations,
291
+ &.icon-cloud-provider-services,
292
+ &.icon-lifecycle-manager {
293
+ background-size: contain;
294
+ background-repeat: no-repeat;
295
+ width: 18px;
296
+ height: 18px;
297
+ display: inline-block;
298
+ vertical-align: text-bottom;
299
+ }
300
+ &.icon-lifecycle-manager {
301
+ background-image: url('assets/img/icons/icon-life-m-light.svg');
302
+ html.dark-theme & {
303
+ background-image: url('assets/img/icons/icon-life-m-dark.svg');
304
+ }
305
+ }
306
+ &.icon-cloud-provider-services {
307
+ background-image: url('assets/img/icons/icon-cps.png');
308
+ html.dark-theme & {
309
+ background-image: url('assets/img/icons/icon-cps-dark-mode.png');
310
+ }
311
+ }
312
+ &.icon-realize-operations {
313
+ background-image: url('assets/img/icons/icon-ro-light.svg');
314
+ html.dark-theme & {
315
+ background-image: url('assets/img/icons/icon-ro-dark.svg');
316
+ }
317
+ }
318
+ }
319
+ .category-text {
320
+ white-space: nowrap;
321
+ overflow: hidden;
322
+ text-overflow: ellipsis;
323
+ font-size: 13px;
324
+ }
325
+ }
326
+ }
327
+ }
328
+ }
329
+ .pin-wrap {
330
+ padding: 6px 4px 5px 12px;
331
+ border-top: 0.05rem solid var(--vertical-nav-divider-border-color);
332
+ label {
333
+ font-size: 13px;
334
+ }
335
+ input[disabled] + label {
336
+ cursor: not-allowed;
337
+ opacity: .5;
338
+ }
339
+ }
340
+ }
341
+ }
342
+ </style>
343
+
344
+ <style>
345
+ :root {
346
+ --vertical-nav-bg-color: rgba(232, 232, 232, 0.85);
347
+ --vertical-nav-item-color: #565656;
348
+ --vertical-nav-active-item-color: #fff;
349
+ --vertical-nav-divider-border-color: #ccc;
350
+ --vertical-border-color: tranparent;
351
+ }
352
+ :root.dark-theme {
353
+ --vertical-nav-bg-color: #17242b;
354
+ --vertical-nav-item-color: #e9ecef;
355
+ --vertical-nav-active-item-color: #000;
356
+ --vertical-nav-divider-border-color: #495865;
357
+ --vertical-border-color: #495865;
358
+ }
359
+ </style>