bfg-common 1.4.580 → 1.4.581

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.
@@ -1,491 +1,491 @@
1
- <template>
2
- <g data-title="network-contents">
3
- <foreignObject
4
- data-title="network-icon"
5
- :width="positions.networkIconSize"
6
- :height="positions.networkIconSize"
7
- :x="positions.networkIconX"
8
- :y="positions.networkIconY"
9
- >
10
- <div :class="networkIcon" :title="errorText"></div>
11
- </foreignObject>
12
-
13
- <a
14
- :id="`network-${props.network.id}`"
15
- :data-id="`${props.network.testId}-link`"
16
- style="text-decoration: none"
17
- cursor="pointer"
18
- data-title="network-name-link"
19
- class="network-title-link"
20
- @click="onSelectNetwork(props.network.id)"
21
- >
22
- <foreignObject
23
- data-title="network-name-text"
24
- height="22"
25
- width="206"
26
- :x="positions.networkTitleX"
27
- :title="props.network.title"
28
- :y="networkTitlePosition"
29
- class="diagram__heading"
30
- >
31
- <span
32
- :class="[
33
- 'network-title text-ellipsis',
34
- {
35
- 'is-selected': props.isSelected,
36
- },
37
- ]"
38
- :title="props.network.title"
39
- :id="`network_${props.network.id}`"
40
- >
41
- {{ props.network.title }}
42
- </span>
43
- </foreignObject>
44
- </a>
45
-
46
- <foreignObject
47
- v-if="isNotShowNetworkActions"
48
- data-title="network-actions"
49
- width="18"
50
- height="18"
51
- :x="positions.actionX"
52
- :y="positions.actionY"
53
- cursor="pointer"
54
- >
55
- <div v-if="isNewView" class="dropdown-actions-container">
56
- <button
57
- :id="`dropdown-${props.network.id}`"
58
- :class="[
59
- 'action-button',
60
- { 'action-button-selected': isShowDropdown },
61
- ]"
62
- @click="isShowDropdown = !isShowDropdown"
63
- >
64
- <ui-icon name="horizontal-dotes" width="16" height="16" />
65
- </button>
66
- <Teleport to="body">
67
- <ui-dropdown
68
- :test-id="props.network.testId"
69
- :show="isShowDropdown"
70
- :items="networkPopupFields"
71
- :elem-id="`dropdown-${props.network.id}`"
72
- width="max-content"
73
- show-from-left
74
- @select="(value: string) => onShowModal(value, dataForSelectedNetwork)"
75
- @hide="onHide"
76
- ></ui-dropdown>
77
- </Teleport>
78
- </div>
79
- <div v-else class="diagram-actions">
80
- <atoms-collapse-nav
81
- class="diagram-actions__icon"
82
- value="-1"
83
- popup-class="diagram-actions__popup"
84
- :close-after-click="true"
85
- :items="networkPopupFields"
86
- :test-id="props.network.testId"
87
- @change="(value: string) => onShowModal(value, dataForSelectedNetwork)"
88
- />
89
- </div>
90
- </foreignObject>
91
-
92
- <text
93
- data-title="network-vlan-text"
94
- dy="11px"
95
- font-size="13"
96
- font-weight="400"
97
- :x="positions.contentX"
98
- :y="props.network.vlanPosition"
99
- class="vlan-id"
100
- >
101
- {{ localization.common.vlanId }}: {{ props.network.vlanId }}
102
- </text>
103
-
104
- <common-diagram-main-highlights
105
- data-title="ports-closed"
106
- type="main-orange"
107
- width="276"
108
- height="18"
109
- :x="positions.blockX"
110
- :y="closedPortsHighlightPosition"
111
- :hide="!props.isNetworkSelectedWithClosedPorts"
112
- />
113
-
114
- <foreignObject
115
- data-title="ports-toggle-icon"
116
- :width="positions.arrowSize"
117
- :height="positions.arrowSize"
118
- :x="positions.arrowX"
119
- :y="positions.portsArrowPosition"
120
- cursor="pointer"
121
- :data-id="`${props.network.testId}-toggle-ports`"
122
- :class="{
123
- disabled: !hasPorts && isNewView,
124
- hide: !hasPorts && !isNewView,
125
- }"
126
- @click="
127
- onTogglePorts(props.network.id, !props.network.toggle, props.diagramId)
128
- "
129
- >
130
- <div class="diagram-block__toggle">
131
- <ui-icon
132
- v-if="isNewView"
133
- name="arrow"
134
- width="16"
135
- height="16"
136
- :class="[
137
- 'virtual-switch__arrow-icon',
138
- {
139
- open: hasPorts ? props.network.toggle : false,
140
- },
141
- ]"
142
- />
143
- <atoms-the-icon
144
- v-else
145
- name="angle"
146
- :class="[
147
- 'virtual-switch__arrow-icon',
148
- {
149
- open: hasPorts ? props.network.toggle : false,
150
- },
151
- ]"
152
- />
153
- </div>
154
- </foreignObject>
155
-
156
- <text
157
- v-if="props.network.state.state !== 3"
158
- data-title="ports-main-text"
159
- dy="11px"
160
- font-size="13"
161
- font-weight="400"
162
- :x="positions.portX"
163
- :y="positions.portsY"
164
- class="port-group-header"
165
- >
166
- {{ props.network.networkPortsName }} ({{ props.network.portsCount }})
167
- </text>
168
- <foreignObject
169
- v-else
170
- dy="11px"
171
- font-size="13"
172
- font-weight="400"
173
- x="26"
174
- height="20"
175
- width="246"
176
- :y="props.network.portsPosition - 5"
177
- class="port-group-header"
178
- >
179
- <span class="error-text text-ellipsis" :title="errorText">
180
- {{ errorText }}
181
- </span>
182
- </foreignObject>
183
-
184
- <common-diagram-main-highlights
185
- data-title="ports-closed"
186
- type="line-orange"
187
- :x="positions.x1"
188
- :y="closedPortsLinePosition"
189
- :x2="positions.x2"
190
- :y2="closedPortsLinePosition"
191
- :hide="!props.isNetworkSelectedWithClosedPorts"
192
- />
193
- </g>
194
- </template>
195
-
196
- <script setup lang="ts">
197
- import type {
198
- UI_I_ModalsInitialData,
199
- UI_I_NetworkFullWithPositions,
200
- } from '~/components/common/diagramMain/lib/models/interfaces'
201
- import type {
202
- UI_I_Localization,
203
- UI_I_ArbitraryObject,
204
- } from '~/lib/models/interfaces'
205
- import {
206
- networkPopupFieldsFunc,
207
- networkPopupFieldsNewFunc,
208
- } from '~/components/common/diagramMain/modals/lib/config'
209
- import {
210
- dataForSelectedNetworkFunc,
211
- networkContentPositionsFunc,
212
- } from '~/components/common/diagramMain/lib/config'
213
-
214
- const props = defineProps<{
215
- network: UI_I_NetworkFullWithPositions
216
- inPortlet: boolean
217
- isNetworkSelectedWithClosedPorts: boolean
218
- diagramId: string
219
- testId?: string
220
- isSelected: boolean
221
- }>()
222
-
223
- const emits = defineEmits<{
224
- (event: 'select-network', networkId: string): void
225
- (
226
- event: 'show-modal',
227
- value: string,
228
- properties?: UI_I_ModalsInitialData
229
- ): void
230
- (
231
- event: 'toggle-ports',
232
- id: string,
233
- newState: boolean,
234
- diagramId: string
235
- ): void
236
- }>()
237
-
238
- const { $store }: any = useNuxtApp()
239
-
240
- const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
241
-
242
- const positions = computed<UI_I_ArbitraryObject<number>>(() =>
243
- networkContentPositionsFunc(
244
- isNewView.value,
245
- props.network.portsPosition,
246
- props.network.titlePosition
247
- )
248
- )
249
-
250
- const isShowDropdown = ref<boolean>(false)
251
- const onHide = (): void => {
252
- isShowDropdown.value = false
253
- }
254
-
255
- const localization = computed<UI_I_Localization>(() => useLocal())
256
-
257
- const networkIcon = computed<string>(() => {
258
- switch (props.network.state.state) {
259
- case 0:
260
- return 'vsphere-icon-network-error network-icon'
261
- case 3:
262
- return 'vsphere-icon-network-error network-icon'
263
- case 2:
264
- return 'vsphere-icon-network-warning network-icon'
265
- default:
266
- return 'vsphere-icon-network network-icon'
267
- }
268
- })
269
-
270
- const errorText = computed<string>(() =>
271
- props.network.state?.errors?.length > 0
272
- ? props.network.state?.errors.join(', ') ||
273
- localization.value.common.somethingWentWrong
274
- : ''
275
- )
276
-
277
- const networkPopupFields = computed(() =>
278
- isNewView.value
279
- ? networkPopupFieldsNewFunc(
280
- localization.value,
281
- props.network.networkType,
282
- props.network.testId,
283
- props.network.state.state,
284
- props.inPortlet
285
- )
286
- : networkPopupFieldsFunc(
287
- localization.value,
288
- props.network.networkType,
289
- props.network.testId,
290
- props.network.state.state,
291
- props.inPortlet
292
- )
293
- )
294
-
295
- const dataForSelectedNetwork = computed<UI_I_ModalsInitialData>(() =>
296
- dataForSelectedNetworkFunc(props.network)
297
- )
298
-
299
- const closedPortsHighlightPosition = computed<number>(
300
- () => props.network.portsPosition - 1.5
301
- )
302
-
303
- const hasPorts = computed<boolean>(() => props.network.portsCount > 0)
304
-
305
- const closedPortsLinePosition = computed<number>(
306
- () => props.network.portsPosition + 7.5
307
- )
308
-
309
- const networkTitlePosition = computed<number>(
310
- () => props.network.titlePosition - 5
311
- )
312
-
313
- const isNotShowNetworkActions = computed<boolean>(
314
- () => !(props.inPortlet && props.network.state.state === 3)
315
- )
316
-
317
- const onSelectNetwork = (networkId: string): void => {
318
- emits('select-network', networkId)
319
- }
320
- const onShowModal = (
321
- value: string,
322
- properties?: UI_I_ModalsInitialData
323
- ): void => {
324
- emits('show-modal', value, properties)
325
- }
326
- const onTogglePorts = (
327
- id: string,
328
- isToggle: boolean,
329
- diagramId: string
330
- ): void => {
331
- emits('toggle-ports', id, isToggle, diagramId)
332
- }
333
- </script>
334
-
335
- <style scoped lang="scss">
336
- @import '@/assets/scss/common/mixins.scss';
337
-
338
- :root.dark-theme {
339
- .diagram__heading,
340
- .vlan-id,
341
- .port-group-header {
342
- fill: #c1cdd4;
343
- }
344
-
345
- .text-ellipsis {
346
- color: #c1cdd4;
347
-
348
- &:hover {
349
- color: #c1cdd4;
350
- text-decoration: solid underline #c1cdd4 2px;
351
- }
352
- }
353
-
354
- .error-text {
355
- color: #e02200;
356
-
357
- &:hover {
358
- color: #e02200;
359
- text-decoration: unset;
360
- }
361
- }
362
- }
363
-
364
- .diagram {
365
- &__heading {
366
- @include text($fs: 14px, $fw: 500);
367
- fill: #565656;
368
- letter-spacing: normal;
369
- line-height: 1.2rem;
370
- }
371
-
372
- &__values {
373
- @include text($fs: 12px, $fw: 400);
374
- }
375
- &-actions {
376
- :deep(.diagram-actions__icon) {
377
- &.tabs-overflow {
378
- top: -12px;
379
- right: -13px;
380
- }
381
- .navbar-dropdown-menu {
382
- .navbar-dropdown-menu-item {
383
- background: red;
384
- }
385
- }
386
- }
387
- }
388
- }
389
-
390
- .virtual-switch__arrow-icon {
391
- width: 16px;
392
- height: 16px;
393
- margin-right: 4px;
394
- transform: rotate(90deg);
395
- align-self: center;
396
- fill: var(--triger-icon-color);
397
- cursor: pointer;
398
- &.open {
399
- transform: rotate(180deg);
400
- }
401
- }
402
-
403
- .text-ellipsis {
404
- display: block;
405
- max-width: 206px;
406
- text-overflow: ellipsis;
407
- overflow: hidden;
408
- white-space: nowrap;
409
- font-weight: 500;
410
- font-size: 14px;
411
- color: #565656;
412
- }
413
- .network-title {
414
- &:hover {
415
- color: #565656;
416
- text-decoration: solid underline #565656 2px;
417
- }
418
- }
419
-
420
- .error-text {
421
- font-weight: 400;
422
- font-size: 12px;
423
- max-width: 246px;
424
- color: #e02200;
425
-
426
- &:hover {
427
- color: #e02200;
428
- text-decoration: unset;
429
- }
430
- }
431
-
432
- :root.is-new-view {
433
- .network-title {
434
- user-select: none;
435
- -webkit-user-select: none;
436
- line-height: 26px;
437
- color: var(--diagram-content-text);
438
-
439
- &:hover {
440
- color: var(--diagram-content-text-hover);
441
- text-decoration: unset;
442
- }
443
- &.is-selected {
444
- color: var(--diagram-content-text-selected);
445
- &:hover {
446
- color: var(--diagram-content-text-selected-hover);
447
- text-decoration: unset;
448
- }
449
- }
450
- }
451
- .disabled {
452
- pointer-events: none;
453
- .virtual-switch__arrow-icon {
454
- fill: none;
455
- color: var(--diagram-content-second-disabled-text);
456
- }
457
- }
458
- .virtual-switch__arrow-icon {
459
- fill: none;
460
- color: var(--diagram-content-second-text);
461
- }
462
- .port-group-header {
463
- fill: var(--diagram-content-second-text);
464
- }
465
- .network-icon {
466
- color: var(--diagram-content-text);
467
- width: 20px;
468
- height: 20px;
469
- }
470
- .vlan-id {
471
- fill: var(--diagram-content-third-text);
472
- }
473
-
474
- .action-button {
475
- border: none;
476
- margin: 0;
477
- padding: 0;
478
- background: transparent;
479
- cursor: pointer;
480
- color: var(--diagram-content-text);
481
-
482
- &:hover {
483
- color: var(--diagram-content-text-hover);
484
- }
485
-
486
- &.action-button-selected {
487
- color: var(--diagram-content-text-selected);
488
- }
489
- }
490
- }
491
- </style>
1
+ <template>
2
+ <g data-title="network-contents">
3
+ <foreignObject
4
+ data-title="network-icon"
5
+ :width="positions.networkIconSize"
6
+ :height="positions.networkIconSize"
7
+ :x="positions.networkIconX"
8
+ :y="positions.networkIconY"
9
+ >
10
+ <div :class="networkIcon" :title="errorText"></div>
11
+ </foreignObject>
12
+
13
+ <a
14
+ :id="`network-${props.network.id}`"
15
+ :data-id="`${props.network.testId}-link`"
16
+ style="text-decoration: none"
17
+ cursor="pointer"
18
+ data-title="network-name-link"
19
+ class="network-title-link"
20
+ @click="onSelectNetwork(props.network.id)"
21
+ >
22
+ <foreignObject
23
+ data-title="network-name-text"
24
+ height="22"
25
+ width="206"
26
+ :x="positions.networkTitleX"
27
+ :title="props.network.title"
28
+ :y="networkTitlePosition"
29
+ class="diagram__heading"
30
+ >
31
+ <span
32
+ :class="[
33
+ 'network-title text-ellipsis',
34
+ {
35
+ 'is-selected': props.isSelected,
36
+ },
37
+ ]"
38
+ :title="props.network.title"
39
+ :id="`network_${props.network.id}`"
40
+ >
41
+ {{ props.network.title }}
42
+ </span>
43
+ </foreignObject>
44
+ </a>
45
+
46
+ <foreignObject
47
+ v-if="isNotShowNetworkActions"
48
+ data-title="network-actions"
49
+ width="18"
50
+ height="18"
51
+ :x="positions.actionX"
52
+ :y="positions.actionY"
53
+ cursor="pointer"
54
+ >
55
+ <div v-if="isNewView" class="dropdown-actions-container">
56
+ <button
57
+ :id="`dropdown-${props.network.id}`"
58
+ :class="[
59
+ 'action-button',
60
+ { 'action-button-selected': isShowDropdown },
61
+ ]"
62
+ @click="isShowDropdown = !isShowDropdown"
63
+ >
64
+ <ui-icon name="horizontal-dotes" width="16" height="16" />
65
+ </button>
66
+ <Teleport to="body">
67
+ <ui-dropdown
68
+ :test-id="props.network.testId"
69
+ :show="isShowDropdown"
70
+ :items="networkPopupFields"
71
+ :elem-id="`dropdown-${props.network.id}`"
72
+ width="max-content"
73
+ show-from-left
74
+ @select="(value: string) => onShowModal(value, dataForSelectedNetwork)"
75
+ @hide="onHide"
76
+ ></ui-dropdown>
77
+ </Teleport>
78
+ </div>
79
+ <div v-else class="diagram-actions">
80
+ <atoms-collapse-nav
81
+ class="diagram-actions__icon"
82
+ value="-1"
83
+ popup-class="diagram-actions__popup"
84
+ :close-after-click="true"
85
+ :items="networkPopupFields"
86
+ :test-id="props.network.testId"
87
+ @change="(value: string) => onShowModal(value, dataForSelectedNetwork)"
88
+ />
89
+ </div>
90
+ </foreignObject>
91
+
92
+ <text
93
+ data-title="network-vlan-text"
94
+ dy="11px"
95
+ font-size="13"
96
+ font-weight="400"
97
+ :x="positions.contentX"
98
+ :y="props.network.vlanPosition"
99
+ class="vlan-id"
100
+ >
101
+ {{ localization.common.vlanId }}: {{ props.network.vlanId }}
102
+ </text>
103
+
104
+ <common-diagram-main-highlights
105
+ data-title="ports-closed"
106
+ type="main-orange"
107
+ width="276"
108
+ height="18"
109
+ :x="positions.blockX"
110
+ :y="closedPortsHighlightPosition"
111
+ :hide="!props.isNetworkSelectedWithClosedPorts"
112
+ />
113
+
114
+ <foreignObject
115
+ data-title="ports-toggle-icon"
116
+ :width="positions.arrowSize"
117
+ :height="positions.arrowSize"
118
+ :x="positions.arrowX"
119
+ :y="positions.portsArrowPosition"
120
+ cursor="pointer"
121
+ :data-id="`${props.network.testId}-toggle-ports`"
122
+ :class="{
123
+ disabled: !hasPorts && isNewView,
124
+ hide: !hasPorts && !isNewView,
125
+ }"
126
+ @click="
127
+ onTogglePorts(props.network.id, !props.network.toggle, props.diagramId)
128
+ "
129
+ >
130
+ <div class="diagram-block__toggle">
131
+ <ui-icon
132
+ v-if="isNewView"
133
+ name="arrow"
134
+ width="16"
135
+ height="16"
136
+ :class="[
137
+ 'virtual-switch__arrow-icon',
138
+ {
139
+ open: hasPorts ? props.network.toggle : false,
140
+ },
141
+ ]"
142
+ />
143
+ <atoms-the-icon
144
+ v-else
145
+ name="angle"
146
+ :class="[
147
+ 'virtual-switch__arrow-icon',
148
+ {
149
+ open: hasPorts ? props.network.toggle : false,
150
+ },
151
+ ]"
152
+ />
153
+ </div>
154
+ </foreignObject>
155
+
156
+ <text
157
+ v-if="props.network.state.state !== 3"
158
+ data-title="ports-main-text"
159
+ dy="11px"
160
+ font-size="13"
161
+ font-weight="400"
162
+ :x="positions.portX"
163
+ :y="positions.portsY"
164
+ class="port-group-header"
165
+ >
166
+ {{ props.network.networkPortsName }} ({{ props.network.portsCount }})
167
+ </text>
168
+ <foreignObject
169
+ v-else
170
+ dy="11px"
171
+ font-size="13"
172
+ font-weight="400"
173
+ x="26"
174
+ height="20"
175
+ width="246"
176
+ :y="props.network.portsPosition - 5"
177
+ class="port-group-header"
178
+ >
179
+ <span class="error-text text-ellipsis" :title="errorText">
180
+ {{ errorText }}
181
+ </span>
182
+ </foreignObject>
183
+
184
+ <common-diagram-main-highlights
185
+ data-title="ports-closed"
186
+ type="line-orange"
187
+ :x="positions.x1"
188
+ :y="closedPortsLinePosition"
189
+ :x2="positions.x2"
190
+ :y2="closedPortsLinePosition"
191
+ :hide="!props.isNetworkSelectedWithClosedPorts"
192
+ />
193
+ </g>
194
+ </template>
195
+
196
+ <script setup lang="ts">
197
+ import type {
198
+ UI_I_ModalsInitialData,
199
+ UI_I_NetworkFullWithPositions,
200
+ } from '~/components/common/diagramMain/lib/models/interfaces'
201
+ import type {
202
+ UI_I_Localization,
203
+ UI_I_ArbitraryObject,
204
+ } from '~/lib/models/interfaces'
205
+ import {
206
+ networkPopupFieldsFunc,
207
+ networkPopupFieldsNewFunc,
208
+ } from '~/components/common/diagramMain/modals/lib/config'
209
+ import {
210
+ dataForSelectedNetworkFunc,
211
+ networkContentPositionsFunc,
212
+ } from '~/components/common/diagramMain/lib/config'
213
+
214
+ const props = defineProps<{
215
+ network: UI_I_NetworkFullWithPositions
216
+ inPortlet: boolean
217
+ isNetworkSelectedWithClosedPorts: boolean
218
+ diagramId: string
219
+ testId?: string
220
+ isSelected: boolean
221
+ }>()
222
+
223
+ const emits = defineEmits<{
224
+ (event: 'select-network', networkId: string): void
225
+ (
226
+ event: 'show-modal',
227
+ value: string,
228
+ properties?: UI_I_ModalsInitialData
229
+ ): void
230
+ (
231
+ event: 'toggle-ports',
232
+ id: string,
233
+ newState: boolean,
234
+ diagramId: string
235
+ ): void
236
+ }>()
237
+
238
+ const { $store }: any = useNuxtApp()
239
+
240
+ const isNewView = computed<boolean>(() => $store.getters['main/getIsNewView'])
241
+
242
+ const positions = computed<UI_I_ArbitraryObject<number>>(() =>
243
+ networkContentPositionsFunc(
244
+ isNewView.value,
245
+ props.network.portsPosition,
246
+ props.network.titlePosition
247
+ )
248
+ )
249
+
250
+ const isShowDropdown = ref<boolean>(false)
251
+ const onHide = (): void => {
252
+ isShowDropdown.value = false
253
+ }
254
+
255
+ const localization = computed<UI_I_Localization>(() => useLocal())
256
+
257
+ const networkIcon = computed<string>(() => {
258
+ switch (props.network.state.state) {
259
+ case 0:
260
+ return 'vsphere-icon-network-error network-icon'
261
+ case 3:
262
+ return 'vsphere-icon-network-error network-icon'
263
+ case 2:
264
+ return 'vsphere-icon-network-warning network-icon'
265
+ default:
266
+ return 'vsphere-icon-network network-icon'
267
+ }
268
+ })
269
+
270
+ const errorText = computed<string>(() =>
271
+ props.network.state?.errors?.length > 0
272
+ ? props.network.state?.errors.join(', ') ||
273
+ localization.value.common.somethingWentWrong
274
+ : ''
275
+ )
276
+
277
+ const networkPopupFields = computed(() =>
278
+ isNewView.value
279
+ ? networkPopupFieldsNewFunc(
280
+ localization.value,
281
+ props.network.networkType,
282
+ props.network.testId,
283
+ props.network.state.state,
284
+ props.inPortlet
285
+ )
286
+ : networkPopupFieldsFunc(
287
+ localization.value,
288
+ props.network.networkType,
289
+ props.network.testId,
290
+ props.network.state.state,
291
+ props.inPortlet
292
+ )
293
+ )
294
+
295
+ const dataForSelectedNetwork = computed<UI_I_ModalsInitialData>(() =>
296
+ dataForSelectedNetworkFunc(props.network)
297
+ )
298
+
299
+ const closedPortsHighlightPosition = computed<number>(
300
+ () => props.network.portsPosition - 1.5
301
+ )
302
+
303
+ const hasPorts = computed<boolean>(() => props.network.portsCount > 0)
304
+
305
+ const closedPortsLinePosition = computed<number>(
306
+ () => props.network.portsPosition + 7.5
307
+ )
308
+
309
+ const networkTitlePosition = computed<number>(
310
+ () => props.network.titlePosition - 5
311
+ )
312
+
313
+ const isNotShowNetworkActions = computed<boolean>(
314
+ () => !(props.inPortlet && props.network.state.state === 3)
315
+ )
316
+
317
+ const onSelectNetwork = (networkId: string): void => {
318
+ emits('select-network', networkId)
319
+ }
320
+ const onShowModal = (
321
+ value: string,
322
+ properties?: UI_I_ModalsInitialData
323
+ ): void => {
324
+ emits('show-modal', value, properties)
325
+ }
326
+ const onTogglePorts = (
327
+ id: string,
328
+ isToggle: boolean,
329
+ diagramId: string
330
+ ): void => {
331
+ emits('toggle-ports', id, isToggle, diagramId)
332
+ }
333
+ </script>
334
+
335
+ <style scoped lang="scss">
336
+ @import '@/assets/scss/common/mixins.scss';
337
+
338
+ :root.dark-theme {
339
+ .diagram__heading,
340
+ .vlan-id,
341
+ .port-group-header {
342
+ fill: #c1cdd4;
343
+ }
344
+
345
+ .text-ellipsis {
346
+ color: #c1cdd4;
347
+
348
+ &:hover {
349
+ color: #c1cdd4;
350
+ text-decoration: solid underline #c1cdd4 2px;
351
+ }
352
+ }
353
+
354
+ .error-text {
355
+ color: #e02200;
356
+
357
+ &:hover {
358
+ color: #e02200;
359
+ text-decoration: unset;
360
+ }
361
+ }
362
+ }
363
+
364
+ .diagram {
365
+ &__heading {
366
+ @include text($fs: 14px, $fw: 500);
367
+ fill: #565656;
368
+ letter-spacing: normal;
369
+ line-height: 1.2rem;
370
+ }
371
+
372
+ &__values {
373
+ @include text($fs: 12px, $fw: 400);
374
+ }
375
+ &-actions {
376
+ :deep(.diagram-actions__icon) {
377
+ &.tabs-overflow {
378
+ top: -12px;
379
+ right: -13px;
380
+ }
381
+ .navbar-dropdown-menu {
382
+ .navbar-dropdown-menu-item {
383
+ background: red;
384
+ }
385
+ }
386
+ }
387
+ }
388
+ }
389
+
390
+ .virtual-switch__arrow-icon {
391
+ width: 16px;
392
+ height: 16px;
393
+ margin-right: 4px;
394
+ transform: rotate(90deg);
395
+ align-self: center;
396
+ fill: var(--triger-icon-color);
397
+ cursor: pointer;
398
+ &.open {
399
+ transform: rotate(180deg);
400
+ }
401
+ }
402
+
403
+ .text-ellipsis {
404
+ display: block;
405
+ max-width: 206px;
406
+ text-overflow: ellipsis;
407
+ overflow: hidden;
408
+ white-space: nowrap;
409
+ font-weight: 500;
410
+ font-size: 14px;
411
+ color: #565656;
412
+ }
413
+ .network-title {
414
+ &:hover {
415
+ color: #565656;
416
+ text-decoration: solid underline #565656 2px;
417
+ }
418
+ }
419
+
420
+ .error-text {
421
+ font-weight: 400;
422
+ font-size: 12px;
423
+ max-width: 246px;
424
+ color: #e02200;
425
+
426
+ &:hover {
427
+ color: #e02200;
428
+ text-decoration: unset;
429
+ }
430
+ }
431
+
432
+ :root.is-new-view {
433
+ .network-title {
434
+ user-select: none;
435
+ -webkit-user-select: none;
436
+ line-height: 26px;
437
+ color: var(--diagram-content-text);
438
+
439
+ &:hover {
440
+ color: var(--diagram-content-text-hover);
441
+ text-decoration: unset;
442
+ }
443
+ &.is-selected {
444
+ color: var(--diagram-content-text-selected);
445
+ &:hover {
446
+ color: var(--diagram-content-text-selected-hover);
447
+ text-decoration: unset;
448
+ }
449
+ }
450
+ }
451
+ .disabled {
452
+ pointer-events: none;
453
+ .virtual-switch__arrow-icon {
454
+ fill: none;
455
+ color: var(--diagram-content-second-disabled-text);
456
+ }
457
+ }
458
+ .virtual-switch__arrow-icon {
459
+ fill: none;
460
+ color: var(--diagram-content-second-text);
461
+ }
462
+ .port-group-header {
463
+ fill: var(--diagram-content-second-text);
464
+ }
465
+ .network-icon {
466
+ color: var(--diagram-content-text);
467
+ width: 20px;
468
+ height: 20px;
469
+ }
470
+ .vlan-id {
471
+ fill: var(--diagram-content-third-text);
472
+ }
473
+
474
+ .action-button {
475
+ border: none;
476
+ margin: 0;
477
+ padding: 0;
478
+ background: transparent;
479
+ cursor: pointer;
480
+ color: var(--diagram-content-text);
481
+
482
+ &:hover {
483
+ color: var(--diagram-content-text-hover);
484
+ }
485
+
486
+ &.action-button-selected {
487
+ color: var(--diagram-content-text-selected);
488
+ }
489
+ }
490
+ }
491
+ </style>