@xen-orchestra/web-core 0.54.0 → 0.56.0
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/lib/components/button-group/VtsButtonGroup.vue +11 -1
- package/lib/components/card-object-title/VtsCardObjectTitle.vue +36 -0
- package/lib/components/code-snippet/VtsCodeSnippet.vue +11 -5
- package/lib/components/drawer/VtsDrawer.vue +89 -0
- package/lib/components/drawer/VtsDrawerButton.vue +22 -0
- package/lib/components/drawer/VtsDrawerCancelButton.vue +33 -0
- package/lib/components/drawer/VtsDrawerConfirmButton.vue +32 -0
- package/lib/components/drawer/VtsDrawerList.vue +34 -0
- package/lib/components/icon/VtsIcon.vue +3 -1
- package/lib/components/layout/VtsContentSidePanel.vue +41 -0
- package/lib/components/layout/VtsLayoutSidebar.vue +5 -2
- package/lib/components/menu/VtsActionsMenu.vue +37 -3
- package/lib/components/modal/VtsModalButton.vue +0 -1
- package/lib/components/operation-card/VtsOperationCard.vue +2 -1
- package/lib/components/panel/VtsPanel.vue +80 -0
- package/lib/components/panel/VtsSidePanel.vue +140 -0
- package/lib/components/query-builder/VtsQueryBuilderModal.vue +0 -1
- package/lib/components/select/VtsSelect.vue +1 -0
- package/lib/components/state-hero/VtsStateHero.vue +26 -24
- package/lib/components/table/VtsTable.vue +2 -1
- package/lib/components/table/cells/VtsActionCell.vue +7 -0
- package/lib/components/table/cells/VtsHeaderCell.vue +1 -17
- package/lib/components/table/cells/VtsLinkCell.vue +3 -1
- package/lib/components/table/cells/VtsTagCell.vue +4 -2
- package/lib/components/tree/VtsTreeItem.vue +9 -3
- package/lib/components/tree/VtsTreeList.vue +6 -3
- package/lib/components/tree/VtsTreeLoadingItem.vue +3 -3
- package/lib/components/ui/drawer/UiDrawer.vue +123 -0
- package/lib/components/ui/head-bar/UiHeadBar.vue +1 -1
- package/lib/components/ui/input/UiInput.vue +3 -1
- package/lib/components/ui/link/UiLink.vue +3 -1
- package/lib/components/ui/modal/UiModal.vue +10 -18
- package/lib/components/ui/panel/UiPanel.vue +7 -24
- package/lib/components/ui/tree-item-label/UiTreeItemLabel.vue +1 -1
- package/lib/composables/default-tab.composable.ts +4 -0
- package/lib/composables/table-state.composable.ts +1 -1
- package/lib/icons/action-icons.ts +20 -2
- package/lib/icons/custom-icons.ts +16 -0
- package/lib/icons/object-icons.ts +33 -18
- package/lib/locales/cs.json +110 -11
- package/lib/locales/da.json +1 -3
- package/lib/locales/de.json +1 -12
- package/lib/locales/en.json +76 -12
- package/lib/locales/es.json +15 -6
- package/lib/locales/fa.json +0 -1
- package/lib/locales/fr.json +76 -12
- package/lib/locales/it.json +0 -1
- package/lib/locales/ko.json +0 -2
- package/lib/locales/nb-NO.json +18 -20
- package/lib/locales/nl.json +0 -11
- package/lib/locales/pt-BR.json +0 -4
- package/lib/locales/pt.json +0 -4
- package/lib/locales/ru.json +0 -1
- package/lib/locales/sk.json +110 -11
- package/lib/locales/sv.json +2 -13
- package/lib/locales/uk.json +0 -1
- package/lib/locales/zh-Hans.json +79 -16
- package/lib/packages/drawer/DrawerProvider.vue +17 -0
- package/lib/packages/drawer/README.md +189 -0
- package/lib/packages/drawer/create-drawer-opener.ts +119 -0
- package/lib/packages/drawer/drawer.store.ts +22 -0
- package/lib/packages/drawer/types.ts +93 -0
- package/lib/packages/drawer/use-drawer.ts +53 -0
- package/lib/packages/modal/create-modal-opener.ts +12 -10
- package/lib/packages/remote-resource/define-remote-resource.ts +64 -29
- package/lib/packages/tree/types.ts +6 -0
- package/lib/packages/tree/use-tree.ts +38 -37
- package/lib/stores/panel.store.ts +56 -5
- package/lib/tables/column-definitions/action-column.ts +22 -10
- package/lib/tables/column-definitions/address-column.ts +1 -1
- package/lib/tables/column-definitions/button-column.ts +1 -1
- package/lib/tables/column-definitions/button-icon-column.ts +1 -1
- package/lib/tables/column-definitions/collapsed-list-column.ts +1 -1
- package/lib/tables/column-definitions/date-column.ts +1 -1
- package/lib/tables/column-definitions/double-link-column.ts +1 -1
- package/lib/tables/column-definitions/info-column.ts +1 -1
- package/lib/tables/column-definitions/input-column.ts +1 -5
- package/lib/tables/column-definitions/link-column.ts +1 -1
- package/lib/tables/column-definitions/link-or-text-column.ts +1 -1
- package/lib/tables/column-definitions/literal-column.ts +1 -1
- package/lib/tables/column-definitions/number-column.ts +1 -1
- package/lib/tables/column-definitions/percent-column.ts +1 -1
- package/lib/tables/column-definitions/progress-bar-column.ts +1 -1
- package/lib/tables/column-definitions/select-column.ts +1 -1
- package/lib/tables/column-definitions/status-column.ts +2 -2
- package/lib/tables/column-definitions/tag-column.ts +3 -2
- package/lib/tables/column-definitions/text-column.ts +1 -1
- package/lib/tables/column-definitions/truncated-text-column.ts +1 -1
- package/lib/tables/column-sets/backup-job-schedule-columns.ts +2 -2
- package/lib/tables/column-sets/backup-log-columns.ts +1 -1
- package/lib/tables/column-sets/new-vm-network-columns.ts +0 -2
- package/lib/tables/column-sets/new-vm-sr-columns.ts +0 -1
- package/lib/tables/column-sets/server-columns.ts +1 -1
- package/lib/tables/column-sets/snapshot-columns.ts +1 -1
- package/lib/tables/column-sets/sr-columns.ts +2 -2
- package/lib/tables/column-sets/traffic-rules-columns.ts +5 -7
- package/lib/tables/column-sets/vif-network-columns.ts +24 -0
- package/lib/tables/column-sets/vm-columns.ts +2 -3
- package/lib/tables/helpers/render-head-cell.ts +2 -4
- package/lib/tables/types.ts +0 -2
- package/lib/types/connection.ts +14 -0
- package/lib/types/state-hero.type.ts +19 -0
- package/lib/types/storage-repository.type.ts +14 -0
- package/lib/types/vue-virtual-scroller.d.ts +8 -2
- package/lib/utils/injection-keys.util.ts +1 -1
- package/lib/utils/sr.utils.ts +34 -0
- package/package.json +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!--
|
|
1
|
+
<!-- v4 -->
|
|
2
2
|
<template>
|
|
3
3
|
<form :class="className" class="ui-modal" @click.self="emit('dismiss')">
|
|
4
4
|
<div class="modal">
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
:accent="closeIconAccent"
|
|
8
8
|
:target-scale="2"
|
|
9
9
|
class="dismiss-button"
|
|
10
|
-
icon="
|
|
11
|
-
size="
|
|
10
|
+
icon="action:close-cancel-clear"
|
|
11
|
+
size="medium"
|
|
12
12
|
@click="emit('dismiss')"
|
|
13
13
|
/>
|
|
14
14
|
<main class="main">
|
|
@@ -36,7 +36,7 @@ import { useMapper } from '@core/packages/mapper'
|
|
|
36
36
|
import { toVariants } from '@core/utils/to-variants.util.ts'
|
|
37
37
|
import { computed } from 'vue'
|
|
38
38
|
|
|
39
|
-
export type ModalAccent = 'info' | '
|
|
39
|
+
export type ModalAccent = 'info' | 'warning' | 'danger'
|
|
40
40
|
|
|
41
41
|
const { accent } = defineProps<{
|
|
42
42
|
accent: ModalAccent
|
|
@@ -58,7 +58,6 @@ const closeIconAccent = useMapper(
|
|
|
58
58
|
() => accent,
|
|
59
59
|
{
|
|
60
60
|
info: 'brand',
|
|
61
|
-
success: 'brand',
|
|
62
61
|
warning: 'warning',
|
|
63
62
|
danger: 'danger',
|
|
64
63
|
},
|
|
@@ -84,7 +83,10 @@ const className = computed(() => toVariants({ accent }))
|
|
|
84
83
|
max-height: min(90vh, 80rem);
|
|
85
84
|
padding: 3.2rem 2.4rem 2.4rem;
|
|
86
85
|
gap: 2.4rem;
|
|
86
|
+
background-color: var(--color-neutral-background-secondary);
|
|
87
87
|
border-radius: 1rem;
|
|
88
|
+
border-width: 0.1rem;
|
|
89
|
+
border-style: solid;
|
|
88
90
|
|
|
89
91
|
&:not(:has(.buttons)) {
|
|
90
92
|
padding-bottom: 3.2rem;
|
|
@@ -122,7 +124,7 @@ const className = computed(() => toVariants({ accent }))
|
|
|
122
124
|
|
|
123
125
|
&.accent--info {
|
|
124
126
|
.modal {
|
|
125
|
-
|
|
127
|
+
border-color: var(--color-info-item-base);
|
|
126
128
|
}
|
|
127
129
|
|
|
128
130
|
.main .icon {
|
|
@@ -130,19 +132,9 @@ const className = computed(() => toVariants({ accent }))
|
|
|
130
132
|
}
|
|
131
133
|
}
|
|
132
134
|
|
|
133
|
-
&.accent--success {
|
|
134
|
-
.modal {
|
|
135
|
-
background-color: var(--color-success-background-selected);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
.main .icon {
|
|
139
|
-
color: var(--color-success-txt-base);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
135
|
&.accent--warning {
|
|
144
136
|
.modal {
|
|
145
|
-
|
|
137
|
+
border-color: var(--color-warning-item-base);
|
|
146
138
|
}
|
|
147
139
|
|
|
148
140
|
.main .icon {
|
|
@@ -152,7 +144,7 @@ const className = computed(() => toVariants({ accent }))
|
|
|
152
144
|
|
|
153
145
|
&.accent--danger {
|
|
154
146
|
.modal {
|
|
155
|
-
|
|
147
|
+
border-color: var(--color-danger-item-base);
|
|
156
148
|
}
|
|
157
149
|
|
|
158
150
|
.main .icon {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<!--
|
|
1
|
+
<!-- v5 -->
|
|
2
2
|
<template>
|
|
3
|
-
<div class="ui-panel" :class="{ error
|
|
3
|
+
<div class="ui-panel" :class="{ error }">
|
|
4
4
|
<div v-if="slots.header" class="header">
|
|
5
5
|
<slot name="header" />
|
|
6
6
|
</div>
|
|
@@ -11,8 +11,6 @@
|
|
|
11
11
|
</template>
|
|
12
12
|
|
|
13
13
|
<script setup lang="ts">
|
|
14
|
-
import { useUiStore } from '@core/stores/ui.store'
|
|
15
|
-
|
|
16
14
|
defineProps<{
|
|
17
15
|
error?: boolean
|
|
18
16
|
}>()
|
|
@@ -21,31 +19,25 @@ const slots = defineSlots<{
|
|
|
21
19
|
default(): any
|
|
22
20
|
header?(): any
|
|
23
21
|
}>()
|
|
24
|
-
|
|
25
|
-
const uiStore = useUiStore()
|
|
26
22
|
</script>
|
|
27
23
|
|
|
28
24
|
<style scoped lang="postcss">
|
|
29
25
|
.ui-panel {
|
|
30
|
-
position: sticky;
|
|
31
|
-
top: 0;
|
|
32
26
|
display: flex;
|
|
33
27
|
flex-direction: column;
|
|
34
28
|
border-inline-start: 0.1rem solid var(--color-neutral-border);
|
|
29
|
+
border-block-end: 0.1rem solid var(--color-neutral-border);
|
|
30
|
+
border-end-start-radius: 0.8rem;
|
|
35
31
|
background-color: var(--color-neutral-background-secondary);
|
|
36
32
|
|
|
37
|
-
&:not(.mobile-drawer) {
|
|
38
|
-
min-height: calc(100dvh - 16rem);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
33
|
.header {
|
|
34
|
+
flex-shrink: 0;
|
|
35
|
+
padding: 0.4rem 1.6rem;
|
|
42
36
|
border-bottom: 0.1rem solid var(--color-neutral-border);
|
|
43
37
|
background-color: var(--color-neutral-background-primary);
|
|
44
38
|
display: flex;
|
|
45
|
-
justify-content: flex-end;
|
|
46
39
|
align-items: center;
|
|
47
40
|
gap: 1.6rem;
|
|
48
|
-
padding: 0.4rem 1.6rem;
|
|
49
41
|
}
|
|
50
42
|
|
|
51
43
|
.content {
|
|
@@ -53,20 +45,11 @@ const uiStore = useUiStore()
|
|
|
53
45
|
flex-direction: column;
|
|
54
46
|
padding: 0.8rem;
|
|
55
47
|
gap: 0.8rem;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
&.mobile-drawer {
|
|
59
|
-
.content {
|
|
60
|
-
overflow: auto;
|
|
61
|
-
}
|
|
48
|
+
scrollbar-width: thin;
|
|
62
49
|
}
|
|
63
50
|
|
|
64
51
|
&.error {
|
|
65
52
|
background-color: var(--color-danger-background-selected);
|
|
66
|
-
|
|
67
|
-
.content {
|
|
68
|
-
padding-top: 15rem;
|
|
69
|
-
}
|
|
70
53
|
}
|
|
71
54
|
}
|
|
72
55
|
</style>
|
|
@@ -72,7 +72,7 @@ const hasToggle = inject(IK_TREE_ITEM_HAS_CHILDREN, ref(false))
|
|
|
72
72
|
|
|
73
73
|
const isExpanded = inject(IK_TREE_ITEM_EXPANDED, ref(true))
|
|
74
74
|
|
|
75
|
-
const depth = inject(IK_TREE_LIST_DEPTH, 0)
|
|
75
|
+
const depth = inject(IK_TREE_LIST_DEPTH, ref(0))
|
|
76
76
|
</script>
|
|
77
77
|
|
|
78
78
|
<style lang="postcss" scoped>
|
|
@@ -14,6 +14,10 @@ export function useDefaultTab(dispatcherRouteName: RouteRecordName & string, def
|
|
|
14
14
|
watch(
|
|
15
15
|
() => route.name as string,
|
|
16
16
|
name => {
|
|
17
|
+
if (name == null) {
|
|
18
|
+
return
|
|
19
|
+
}
|
|
20
|
+
|
|
17
21
|
if (name === dispatcherRouteName) {
|
|
18
22
|
const isSameDispatcher = localStorage.getItem(TAB_MEMORY_DISPATCHER) === dispatcherRouteName
|
|
19
23
|
const tabName = (isSameDispatcher ? localStorage.getItem(TAB_MEMORY_LAST) : null) ?? defaultTab
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { StateHeroType } from '@core/components/state-hero/VtsStateHero.vue'
|
|
2
1
|
import type { TableState } from '@core/components/table/VtsTable.vue'
|
|
2
|
+
import type { StateHeroType } from '@core/types/state-hero.type.ts'
|
|
3
3
|
import { computed, toValue, type MaybeRefOrGetter } from 'vue'
|
|
4
4
|
import { useI18n } from 'vue-i18n'
|
|
5
5
|
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import { slash } from '@core/icons/custom-icons.ts'
|
|
1
2
|
import { defineIconPack, type IconSingleConfig } from '@core/packages/icon'
|
|
2
3
|
import { faCopy, faSquare as checkboxEmpty, type IconDefinition } from '@fortawesome/free-regular-svg-icons'
|
|
3
4
|
import {
|
|
4
5
|
faAdd,
|
|
5
6
|
faArrowCircleRight,
|
|
7
|
+
faArrowDownLong,
|
|
6
8
|
faArrowRight,
|
|
7
9
|
faArrowRotateLeft,
|
|
8
10
|
faArrowRotateRight,
|
|
11
|
+
faArrowUpLong,
|
|
9
12
|
faArrowUpRightFromSquare,
|
|
10
13
|
faBan,
|
|
11
14
|
faBars,
|
|
@@ -24,6 +27,7 @@ import {
|
|
|
24
27
|
faLink,
|
|
25
28
|
faLinkSlash,
|
|
26
29
|
faMinus,
|
|
30
|
+
faPlug,
|
|
27
31
|
faPowerOff,
|
|
28
32
|
faRefresh,
|
|
29
33
|
faRoute,
|
|
@@ -132,8 +136,10 @@ export const actionIcons = defineIconPack({
|
|
|
132
136
|
fill: constructIcon(faFillDrip),
|
|
133
137
|
duplicate: constructIcon(faClone),
|
|
134
138
|
copy: constructIcon(faCopy),
|
|
135
|
-
|
|
136
|
-
|
|
139
|
+
attach: constructIcon(faLink),
|
|
140
|
+
detach: constructIcon(faLinkSlash),
|
|
141
|
+
connect: constructIcon(faPlug),
|
|
142
|
+
disconnect: [constructIcon(faPlug), { icon: slash }],
|
|
137
143
|
forget: constructIcon(faEraser),
|
|
138
144
|
delete: { icon: faTrash, color: 'var(--color-danger-txt-primary)' },
|
|
139
145
|
'more-actions': constructIcon(faEllipsis),
|
|
@@ -142,6 +148,18 @@ export const actionIcons = defineIconPack({
|
|
|
142
148
|
color: 'var(--color-neutral-txt-primary)',
|
|
143
149
|
rotate: 90,
|
|
144
150
|
},
|
|
151
|
+
'import-export': [
|
|
152
|
+
{
|
|
153
|
+
icon: faArrowUpLong,
|
|
154
|
+
color: 'var(--color-neutral-txt-primary)',
|
|
155
|
+
translate: [-5, 0],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
icon: faArrowDownLong,
|
|
159
|
+
color: 'var(--color-neutral-txt-primary)',
|
|
160
|
+
translate: [5, 0],
|
|
161
|
+
},
|
|
162
|
+
],
|
|
145
163
|
reboot: constructIcon(faArrowRotateRight),
|
|
146
164
|
'force-reboot': [
|
|
147
165
|
constructIcon(faArrowRotateRight),
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defineIcon } from '@core/packages/icon'
|
|
2
|
+
import { faSlash } from '@fortawesome/free-solid-svg-icons'
|
|
3
|
+
|
|
4
|
+
export const slash = defineIcon([
|
|
5
|
+
{
|
|
6
|
+
icon: faSlash,
|
|
7
|
+
color: 'var(--color-neutral-background-primary)',
|
|
8
|
+
translate: [-0.5, 0.5],
|
|
9
|
+
size: 20,
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
icon: faSlash,
|
|
13
|
+
translate: [0.5, -0.5],
|
|
14
|
+
size: 20,
|
|
15
|
+
},
|
|
16
|
+
])
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { slash } from '@core/icons/custom-icons.ts'
|
|
1
2
|
import { statusIcons } from '@core/icons/status-icons.ts'
|
|
2
3
|
import { defineIcon, type IconSingleConfig } from '@core/packages/icon'
|
|
3
4
|
import { defineIconPack } from '@core/packages/icon/define-icon-pack.ts'
|
|
@@ -12,14 +13,13 @@ import {
|
|
|
12
13
|
faClock,
|
|
13
14
|
faDatabase,
|
|
14
15
|
faDesktop,
|
|
15
|
-
faEthernet,
|
|
16
16
|
faHdd,
|
|
17
|
+
faMapPin,
|
|
17
18
|
faNetworkWired,
|
|
18
19
|
faPlay,
|
|
19
20
|
faPuzzlePiece,
|
|
20
21
|
faSatellite,
|
|
21
22
|
faServer,
|
|
22
|
-
faSlash,
|
|
23
23
|
faUserCircle,
|
|
24
24
|
faUsers,
|
|
25
25
|
type IconDefinition,
|
|
@@ -48,21 +48,6 @@ function constructIcon(icon: IconDefinition): IconSingleConfig {
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
const slash = defineIcon([
|
|
52
|
-
{
|
|
53
|
-
icon: faSlash,
|
|
54
|
-
color: 'var(--color-neutral-background-primary)',
|
|
55
|
-
translate: [-0.5, 0.5],
|
|
56
|
-
size: 20,
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
icon: faSlash,
|
|
60
|
-
color: 'var(--color-neutral-txt-secondary)',
|
|
61
|
-
translate: [0.5, -0.5],
|
|
62
|
-
size: 20,
|
|
63
|
-
},
|
|
64
|
-
])
|
|
65
|
-
|
|
66
51
|
const runningNeutral = defineIcon([
|
|
67
52
|
{
|
|
68
53
|
icon: faCircle,
|
|
@@ -145,6 +130,7 @@ export const objectIcons = defineIconPack({
|
|
|
145
130
|
},
|
|
146
131
|
{
|
|
147
132
|
icon: slash,
|
|
133
|
+
color: 'var(--color-neutral-txt-secondary)',
|
|
148
134
|
},
|
|
149
135
|
],
|
|
150
136
|
host: constructIcon(faServer),
|
|
@@ -155,6 +141,7 @@ export const objectIcons = defineIconPack({
|
|
|
155
141
|
},
|
|
156
142
|
{
|
|
157
143
|
icon: slash,
|
|
144
|
+
color: 'var(--color-neutral-txt-secondary)',
|
|
158
145
|
},
|
|
159
146
|
],
|
|
160
147
|
'host:running': [constructIcon(faServer), ...constructCircleStatus('running-circle')],
|
|
@@ -169,6 +156,7 @@ export const objectIcons = defineIconPack({
|
|
|
169
156
|
},
|
|
170
157
|
{
|
|
171
158
|
icon: slash,
|
|
159
|
+
color: 'var(--color-neutral-txt-secondary)',
|
|
172
160
|
},
|
|
173
161
|
],
|
|
174
162
|
'vm:running': [constructIcon(faDesktop), ...constructCircleStatus('running-circle')],
|
|
@@ -190,6 +178,7 @@ export const objectIcons = defineIconPack({
|
|
|
190
178
|
},
|
|
191
179
|
{
|
|
192
180
|
icon: slash,
|
|
181
|
+
color: 'var(--color-neutral-txt-secondary)',
|
|
193
182
|
},
|
|
194
183
|
],
|
|
195
184
|
'sr:connected': [constructIcon(faDatabase), ...constructCircleStatus('success-circle')],
|
|
@@ -204,13 +193,37 @@ export const objectIcons = defineIconPack({
|
|
|
204
193
|
},
|
|
205
194
|
{
|
|
206
195
|
icon: slash,
|
|
196
|
+
color: 'var(--color-neutral-txt-secondary)',
|
|
207
197
|
},
|
|
208
198
|
],
|
|
209
199
|
'vdi:attached': [constructIcon(faHdd), ...constructCircleStatus('success-circle')],
|
|
210
200
|
'vdi:disabled': [constructIcon(faHdd), ...constructCircleStatus('disabled')],
|
|
211
201
|
'vdi:warning': [constructIcon(faHdd), ...constructCircleStatus('warning-circle')],
|
|
212
202
|
'vdi:detached': [constructIcon(faHdd), ...constructCircleStatus('danger-circle')],
|
|
213
|
-
|
|
203
|
+
'vdi-snapshot': [
|
|
204
|
+
constructIcon(faHdd),
|
|
205
|
+
{
|
|
206
|
+
icon: camera,
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
vif: [
|
|
210
|
+
{
|
|
211
|
+
icon: faMapPin,
|
|
212
|
+
color: 'var(--color-neutral-txt-primary)',
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
icon: faCircle,
|
|
216
|
+
color: 'var(--color-neutral-txt-primary)',
|
|
217
|
+
translate: [0, -4],
|
|
218
|
+
size: 12,
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
icon: faCircle,
|
|
222
|
+
color: 'var(--color-neutral-background-primary)',
|
|
223
|
+
translate: [0, -4],
|
|
224
|
+
size: 8,
|
|
225
|
+
},
|
|
226
|
+
],
|
|
214
227
|
network: constructIcon(faNetworkWired),
|
|
215
228
|
'network:unknown': [
|
|
216
229
|
{
|
|
@@ -219,6 +232,7 @@ export const objectIcons = defineIconPack({
|
|
|
219
232
|
},
|
|
220
233
|
{
|
|
221
234
|
icon: slash,
|
|
235
|
+
color: 'var(--color-neutral-txt-secondary)',
|
|
222
236
|
},
|
|
223
237
|
],
|
|
224
238
|
'network:connected': [constructIcon(faNetworkWired), ...constructCircleStatus('success-circle')],
|
|
@@ -232,6 +246,7 @@ export const objectIcons = defineIconPack({
|
|
|
232
246
|
},
|
|
233
247
|
{
|
|
234
248
|
icon: slash,
|
|
249
|
+
color: 'var(--color-neutral-txt-secondary)',
|
|
235
250
|
},
|
|
236
251
|
],
|
|
237
252
|
'br:connected': [constructIcon(faBoxesStacked), ...constructCircleStatus('success-circle')],
|