@xen-orchestra/web-core 0.27.0 → 0.28.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/card/VtsCardRowKeyValue.vue +1 -0
- package/lib/components/cell-object/VtsCellObject.vue +1 -2
- package/lib/components/console/VtsActionsConsole.vue +3 -9
- package/lib/components/copy-button/VtsCopyButton.vue +1 -3
- package/lib/components/dropdown/DropdownTitle.vue +3 -3
- package/lib/components/icon/VtsIcon.vue +32 -76
- package/lib/components/input-wrapper/VtsInputWrapper.vue +2 -2
- package/lib/components/layout/VtsLayoutSidebar.vue +1 -2
- package/lib/components/menu/MenuItem.vue +4 -5
- package/lib/components/menu/MenuTrigger.vue +3 -3
- package/lib/components/object-icon/VtsObjectIcon.vue +2 -2
- package/lib/components/resources/VtsResource.vue +3 -3
- package/lib/components/select/VtsSelect.vue +4 -5
- package/lib/components/table/ColumnTitle.vue +11 -12
- package/lib/components/task/VtsQuickTaskButton.vue +1 -2
- package/lib/components/tree/VtsTreeLoadingItem.vue +3 -3
- package/lib/components/ui/alarm-item/UiAlarmItem.vue +1 -2
- package/lib/components/ui/alert/UiAlert.vue +14 -13
- package/lib/components/ui/button/UiButton.vue +4 -5
- package/lib/components/ui/button-icon/UiButtonIcon.vue +3 -3
- package/lib/components/ui/checkbox/UiCheckbox.vue +2 -9
- package/lib/components/ui/chip/ChipIcon.vue +3 -3
- package/lib/components/ui/chip/ChipRemoveIcon.vue +1 -2
- package/lib/components/ui/chip/UiChip.vue +2 -2
- package/lib/components/ui/circle-progress-bar/UiCircleProgressBar.vue +7 -4
- package/lib/components/ui/donut-chart/UiDonutChart.vue +30 -17
- package/lib/components/ui/dropdown/UiDropdown.vue +5 -7
- package/lib/components/ui/dropdown-button/UiDropdownButton.vue +4 -5
- package/lib/components/ui/head-bar/UiHeadBar.vue +6 -11
- package/lib/components/ui/info/UiInfo.vue +14 -20
- package/lib/components/ui/input/UiInput.vue +6 -7
- package/lib/components/ui/label/UiLabel.vue +3 -3
- package/lib/components/ui/legend/UiLegend.vue +3 -3
- package/lib/components/ui/legend-title/UiLegendTitle.vue +7 -3
- package/lib/components/ui/link/UiLink.vue +4 -5
- package/lib/components/ui/log-entry-viewer/UiLogEntryViewer.vue +6 -2
- package/lib/components/ui/object-link/UiObjectLink.vue +4 -4
- package/lib/components/ui/query-search-bar/UiQuerySearchBar.vue +3 -4
- package/lib/components/ui/quick-task-item/UiQuickTaskItem.vue +3 -4
- package/lib/components/ui/radio-button/UiRadioButton.vue +1 -2
- package/lib/components/ui/table-pagination/PaginationButton.vue +2 -25
- package/lib/components/ui/table-pagination/UiTablePagination.vue +41 -20
- package/lib/components/ui/tag/UiTag.vue +3 -3
- package/lib/components/ui/text-area/UiTextarea.vue +2 -2
- package/lib/components/ui/toaster/UiToaster.vue +15 -13
- package/lib/components/ui/tree-item-label/UiTreeItemLabel.vue +4 -5
- package/lib/composables/pagination.composable.ts +5 -0
- package/lib/i18n.ts +4 -0
- package/lib/icons/fa-icons.ts +48 -2
- package/lib/icons/index.ts +4 -0
- package/lib/icons/legacy-icons.ts +10 -0
- package/lib/icons/object-icons.ts +1 -1
- package/lib/layouts/CoreLayout.vue +1 -2
- package/lib/locales/cs.json +29 -10
- package/lib/locales/de.json +70 -7
- package/lib/locales/en.json +22 -0
- package/lib/locales/es.json +3 -3
- package/lib/locales/fr.json +22 -0
- package/lib/locales/it.json +17 -5
- package/lib/locales/nl.json +28 -10
- package/lib/locales/pt_BR.json +67 -0
- package/lib/locales/sv.json +17 -0
- package/lib/packages/icon/DisplayIcon.vue +1 -0
- package/lib/packages/progress/README.md +62 -0
- package/lib/packages/progress/types.ts +19 -0
- package/lib/packages/progress/use-progress-group.ts +68 -0
- package/lib/packages/progress/use-progress.ts +22 -0
- package/lib/packages/threshold/README.md +30 -0
- package/lib/packages/threshold/type.ts +3 -0
- package/lib/packages/threshold/use-threshold.ts +19 -0
- package/lib/types/object-icon.type.ts +0 -40
- package/package.json +1 -1
- package/lib/components/icon/NewVtsIcon.vue +0 -49
- package/lib/components/ui/complex-icon/UiComplexIcon.vue +0 -45
- package/lib/components/ui/object-icon/UiObjectIcon.vue +0 -251
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<template>
|
|
3
3
|
<li class="ui-quick-task-item">
|
|
4
4
|
<div v-if="hasSubTasks" class="toggle" @click="toggleExpand()">
|
|
5
|
-
<UiButtonIcon accent="brand" :icon="isExpanded ?
|
|
5
|
+
<UiButtonIcon accent="brand" :icon="isExpanded ? 'fa:angle-down' : 'fa:angle-right'" size="small" />
|
|
6
6
|
</div>
|
|
7
7
|
<div class="content">
|
|
8
8
|
<div class="typo-body-bold">
|
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
<div class="line-1">
|
|
13
13
|
<UiTag v-if="task.tag" accent="neutral" variant="primary">{{ task.tag }}</UiTag>
|
|
14
14
|
<div v-if="hasSubTasks" class="subtasks">
|
|
15
|
-
<VtsIcon
|
|
15
|
+
<VtsIcon name="fa:circle-notch" size="medium" />
|
|
16
16
|
<span class="typo-body-regular-small">{{ t('tasks.n-subtasks', { n: subTasksCount }) }}</span>
|
|
17
17
|
</div>
|
|
18
18
|
</div>
|
|
19
19
|
<div v-if="task.start" class="line-2 typo-body-regular-small">
|
|
20
20
|
{{ d(task.start, 'datetime_short') }}
|
|
21
21
|
<template v-if="task.end">
|
|
22
|
-
<VtsIcon
|
|
22
|
+
<VtsIcon name="fa:arrow-right" size="medium" />
|
|
23
23
|
{{ d(new Date(task.end), 'datetime_short') }}
|
|
24
24
|
</template>
|
|
25
25
|
</div>
|
|
@@ -34,7 +34,6 @@ import VtsIcon from '@core/components/icon/VtsIcon.vue'
|
|
|
34
34
|
import VtsQuickTaskList from '@core/components/task/VtsQuickTaskList.vue'
|
|
35
35
|
import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
|
|
36
36
|
import UiTag from '@core/components/ui/tag/UiTag.vue'
|
|
37
|
-
import { faAngleDown, faAngleRight, faArrowRight, faCircleNotch } from '@fortawesome/free-solid-svg-icons'
|
|
38
37
|
import { useToggle } from '@vueuse/core'
|
|
39
38
|
import { computed } from 'vue'
|
|
40
39
|
import { useI18n } from 'vue-i18n'
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<label :class="variant" class="ui-radio-button typo-body-regular">
|
|
4
4
|
<span class="radio-container">
|
|
5
5
|
<input v-model="model" :disabled="isDisabled" :value class="input" type="radio" />
|
|
6
|
-
<VtsIcon
|
|
6
|
+
<VtsIcon name="fa:circle" size="medium" class="radio-icon" />
|
|
7
7
|
</span>
|
|
8
8
|
<slot />
|
|
9
9
|
</label>
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
import VtsIcon from '@core/components/icon/VtsIcon.vue'
|
|
14
14
|
import { useDisabled } from '@core/composables/disabled.composable'
|
|
15
15
|
import { toVariants } from '@core/utils/to-variants.util'
|
|
16
|
-
import { faCircle } from '@fortawesome/free-solid-svg-icons'
|
|
17
16
|
import { computed } from 'vue'
|
|
18
17
|
|
|
19
18
|
const { accent, value, disabled } = defineProps<{
|
|
@@ -4,33 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
<script setup lang="ts">
|
|
6
6
|
import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
|
|
7
|
-
import type {
|
|
7
|
+
import type { IconName } from '@core/icons'
|
|
8
8
|
|
|
9
9
|
defineProps<{
|
|
10
10
|
disabled: boolean
|
|
11
|
-
icon:
|
|
11
|
+
icon: IconName
|
|
12
12
|
}>()
|
|
13
13
|
</script>
|
|
14
|
-
|
|
15
|
-
<style scoped lang="postcss">
|
|
16
|
-
.pagination-button.accent--brand {
|
|
17
|
-
border: 0.1rem solid var(--color-neutral-border);
|
|
18
|
-
font-size: 1rem;
|
|
19
|
-
/* Override UiButtonIcon size to match DS */
|
|
20
|
-
width: 3rem;
|
|
21
|
-
height: 3rem;
|
|
22
|
-
|
|
23
|
-
&:hover {
|
|
24
|
-
border-color: var(--color-brand-item-hover);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
&:active {
|
|
28
|
-
border-color: var(--color-brand-item-active);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
&:disabled {
|
|
32
|
-
background-color: var(--color-neutral-background-disabled);
|
|
33
|
-
border-color: transparent;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
</style>
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
<!--
|
|
1
|
+
<!-- v5 -->
|
|
2
2
|
<template>
|
|
3
|
-
<div class="ui-table-pagination">
|
|
4
|
-
<div class="
|
|
5
|
-
<
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<
|
|
3
|
+
<div class="ui-table-pagination" :class="className">
|
|
4
|
+
<div class="container">
|
|
5
|
+
<span class="typo-body-regular-small label">
|
|
6
|
+
{{ t('core.select.n-object-of', { from, to, total }) }}
|
|
7
|
+
</span>
|
|
8
|
+
<div class="buttons-container">
|
|
9
|
+
<PaginationButton :disabled="isFirstPage" icon="fa:angle-double-left" @click="emit('first')" />
|
|
10
|
+
<PaginationButton :disabled="isFirstPage" icon="fa:angle-left" @click="emit('previous')" />
|
|
11
|
+
<PaginationButton :disabled="isLastPage" icon="fa:angle-right" @click="emit('next')" />
|
|
12
|
+
<PaginationButton :disabled="isLastPage" icon="fa:angle-double-right" @click="emit('last')" />
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="container">
|
|
16
|
+
<span class="typo-body-regular-small label show">{{ t('core.pagination.show-by') }}</span>
|
|
17
|
+
<VtsSelect :id="showBySelectId" accent="brand" class="typo-body-regular-small show-by-select" />
|
|
9
18
|
</div>
|
|
10
|
-
<span class="typo-body-regular-small label">
|
|
11
|
-
{{ t('core.select.n-object-of', { from, to, total }) }}
|
|
12
|
-
</span>
|
|
13
|
-
<span class="typo-body-regular-small label show">{{ t('core.pagination.show-by') }}</span>
|
|
14
|
-
<VtsSelect :id="showBySelectId" accent="brand" class="typo-body-regular-small show-by-select" />
|
|
15
19
|
</div>
|
|
16
20
|
</template>
|
|
17
21
|
|
|
@@ -19,15 +23,19 @@
|
|
|
19
23
|
import VtsSelect from '@core/components/select/VtsSelect.vue'
|
|
20
24
|
import PaginationButton from '@core/components/ui/table-pagination/PaginationButton.vue'
|
|
21
25
|
import { useFormSelect } from '@core/packages/form-select'
|
|
22
|
-
import {
|
|
26
|
+
import { toVariants } from '@core/utils/to-variants.util.ts'
|
|
27
|
+
import { computed } from 'vue'
|
|
23
28
|
import { useI18n } from 'vue-i18n'
|
|
24
29
|
|
|
25
|
-
|
|
30
|
+
export type TablePaginationSize = 'small' | 'medium'
|
|
31
|
+
|
|
32
|
+
const { size } = defineProps<{
|
|
26
33
|
from: number
|
|
27
34
|
to: number
|
|
28
35
|
total: number
|
|
29
36
|
isFirstPage: boolean
|
|
30
37
|
isLastPage: boolean
|
|
38
|
+
size: TablePaginationSize
|
|
31
39
|
}>()
|
|
32
40
|
|
|
33
41
|
const emit = defineEmits<{
|
|
@@ -39,6 +47,8 @@ const emit = defineEmits<{
|
|
|
39
47
|
|
|
40
48
|
const showBy = defineModel<number>('showBy', { default: 24 })
|
|
41
49
|
|
|
50
|
+
const className = computed(() => toVariants({ size }))
|
|
51
|
+
|
|
42
52
|
const { t } = useI18n()
|
|
43
53
|
|
|
44
54
|
const { id: showBySelectId } = useFormSelect([12, 24, 48, -1], {
|
|
@@ -55,6 +65,21 @@ const { id: showBySelectId } = useFormSelect([12, 24, 48, -1], {
|
|
|
55
65
|
align-items: center;
|
|
56
66
|
gap: 0.8rem;
|
|
57
67
|
|
|
68
|
+
&.size--small {
|
|
69
|
+
flex-direction: column;
|
|
70
|
+
align-items: flex-end;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&.size--medium {
|
|
74
|
+
flex-direction: row;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.container {
|
|
78
|
+
display: flex;
|
|
79
|
+
gap: 0.8rem;
|
|
80
|
+
align-items: center;
|
|
81
|
+
}
|
|
82
|
+
|
|
58
83
|
.buttons-container {
|
|
59
84
|
display: flex;
|
|
60
85
|
gap: 0.2rem;
|
|
@@ -64,19 +89,15 @@ const { id: showBySelectId } = useFormSelect([12, 24, 48, -1], {
|
|
|
64
89
|
color: var(--color-neutral-txt-secondary);
|
|
65
90
|
}
|
|
66
91
|
|
|
67
|
-
.show::before {
|
|
68
|
-
content: '-';
|
|
69
|
-
margin-right: 0.8rem;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
92
|
/* Workaround: we don't have "small" select yet */
|
|
73
93
|
.show-by-select {
|
|
74
|
-
width:
|
|
94
|
+
width: 6rem;
|
|
75
95
|
|
|
76
96
|
&:deep(.ui-input) {
|
|
77
97
|
height: 3rem;
|
|
78
98
|
padding-inline: 0.8rem;
|
|
79
99
|
gap: 0.8rem;
|
|
100
|
+
min-width: 6rem;
|
|
80
101
|
}
|
|
81
102
|
|
|
82
103
|
&:deep(.input) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<template>
|
|
4
4
|
<span :class="toVariants({ accent, variant })" class="ui-tag typo-body-regular-small">
|
|
5
5
|
<slot name="icon">
|
|
6
|
-
<VtsIcon :icon
|
|
6
|
+
<VtsIcon :name="icon" size="medium" />
|
|
7
7
|
</slot>
|
|
8
8
|
<span class="text-ellipsis"><slot /></span>
|
|
9
9
|
</span>
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
|
|
12
12
|
<script lang="ts" setup>
|
|
13
13
|
import VtsIcon from '@core/components/icon/VtsIcon.vue'
|
|
14
|
+
import type { IconName } from '@core/icons'
|
|
14
15
|
import { toVariants } from '@core/utils/to-variants.util'
|
|
15
|
-
import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
|
|
16
16
|
|
|
17
17
|
type TagAccent = 'info' | 'neutral' | 'success' | 'warning' | 'danger' | 'muted'
|
|
18
18
|
type TagVariant = 'primary' | 'secondary'
|
|
@@ -20,7 +20,7 @@ type TagVariant = 'primary' | 'secondary'
|
|
|
20
20
|
defineProps<{
|
|
21
21
|
accent: TagAccent
|
|
22
22
|
variant: TagVariant
|
|
23
|
-
icon?:
|
|
23
|
+
icon?: IconName
|
|
24
24
|
}>()
|
|
25
25
|
|
|
26
26
|
defineSlots<{
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
import UiCharacterLimit from '@core/components/ui/character-limit/UiCharacterLimit.vue'
|
|
20
20
|
import UiInfo from '@core/components/ui/info/UiInfo.vue'
|
|
21
21
|
import UiLabel from '@core/components/ui/label/UiLabel.vue'
|
|
22
|
+
import type { IconName } from '@core/icons'
|
|
22
23
|
import { toVariants } from '@core/utils/to-variants.util'
|
|
23
|
-
import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
|
|
24
24
|
import { useFocus } from '@vueuse/core'
|
|
25
25
|
import { computed, useAttrs, useId, useTemplateRef } from 'vue'
|
|
26
26
|
import { useI18n } from 'vue-i18n'
|
|
@@ -39,7 +39,7 @@ const {
|
|
|
39
39
|
maxCharacters?: number
|
|
40
40
|
disabled?: boolean
|
|
41
41
|
href?: string
|
|
42
|
-
icon?:
|
|
42
|
+
icon?: IconName
|
|
43
43
|
required?: boolean
|
|
44
44
|
}>()
|
|
45
45
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<template>
|
|
3
3
|
<div :class="toVariants({ accent })" class="ui-toaster">
|
|
4
4
|
<div class="content">
|
|
5
|
-
<VtsIcon class="information-icon" :
|
|
5
|
+
<VtsIcon class="information-icon" :name="icon" size="medium" />
|
|
6
6
|
<div>
|
|
7
7
|
<div class="typo-h5">
|
|
8
8
|
<slot />
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<slot name="description" />
|
|
12
12
|
</div>
|
|
13
13
|
</div>
|
|
14
|
-
<UiButtonIcon class="close-icon"
|
|
14
|
+
<UiButtonIcon class="close-icon" icon="fa:xmark" accent="brand" size="medium" @click="emit('close')" />
|
|
15
15
|
</div>
|
|
16
16
|
<div v-if="slots.actions" class="actions">
|
|
17
17
|
<slot name="actions" />
|
|
@@ -22,14 +22,13 @@
|
|
|
22
22
|
<script setup lang="ts">
|
|
23
23
|
import VtsIcon from '@core/components/icon/VtsIcon.vue'
|
|
24
24
|
import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
|
|
25
|
+
import type { IconName } from '@core/icons'
|
|
26
|
+
import { useMapper } from '@core/packages/mapper'
|
|
25
27
|
import { toVariants } from '@core/utils/to-variants.util'
|
|
26
|
-
import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
|
|
27
|
-
import { faCheck, faCircle, faExclamation, faInfo, faXmark } from '@fortawesome/free-solid-svg-icons'
|
|
28
|
-
import { computed } from 'vue'
|
|
29
28
|
|
|
30
29
|
type ToasterAccent = 'info' | 'success' | 'warning' | 'danger'
|
|
31
30
|
|
|
32
|
-
const
|
|
31
|
+
const { accent } = defineProps<{
|
|
33
32
|
accent: ToasterAccent
|
|
34
33
|
}>()
|
|
35
34
|
|
|
@@ -43,13 +42,16 @@ const slots = defineSlots<{
|
|
|
43
42
|
actions?(): any
|
|
44
43
|
}>()
|
|
45
44
|
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
const icon = useMapper<ToasterAccent, IconName>(
|
|
46
|
+
() => accent,
|
|
47
|
+
{
|
|
48
|
+
info: 'legacy:status:info',
|
|
49
|
+
success: 'legacy:status:success',
|
|
50
|
+
warning: 'legacy:status:warning',
|
|
51
|
+
danger: 'legacy:status:danger',
|
|
52
|
+
},
|
|
53
|
+
'info'
|
|
54
|
+
)
|
|
53
55
|
</script>
|
|
54
56
|
|
|
55
57
|
<style scoped lang="postcss">
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
v-tooltip="isExpanded ? t('core.close') : t('core.open')"
|
|
20
20
|
class="toggle"
|
|
21
21
|
accent="brand"
|
|
22
|
-
:icon="isExpanded ?
|
|
22
|
+
:icon="isExpanded ? 'fa:angle-down' : 'fa:angle-right'"
|
|
23
23
|
size="small"
|
|
24
24
|
:target-scale="{ x: 1.5, y: 2 }"
|
|
25
25
|
@click="emit('toggle')"
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
<div v-else class="h-line" />
|
|
28
28
|
<a v-tooltip="{ selector: '.text' }" :href class="link typo-body-bold-small" @click="navigate">
|
|
29
29
|
<slot name="icon">
|
|
30
|
-
<VtsIcon :icon
|
|
30
|
+
<VtsIcon :name="icon" size="medium" class="icon" />
|
|
31
31
|
</slot>
|
|
32
32
|
<div class="text text-ellipsis">
|
|
33
33
|
<slot />
|
|
@@ -43,9 +43,8 @@ import VtsIcon from '@core/components/icon/VtsIcon.vue'
|
|
|
43
43
|
import VtsTreeLine from '@core/components/tree/VtsTreeLine.vue'
|
|
44
44
|
import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
|
|
45
45
|
import { vTooltip } from '@core/directives/tooltip.directive'
|
|
46
|
+
import type { IconName } from '@core/icons'
|
|
46
47
|
import { IK_TREE_ITEM_EXPANDED, IK_TREE_ITEM_HAS_CHILDREN, IK_TREE_LIST_DEPTH } from '@core/utils/injection-keys.util'
|
|
47
|
-
import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
|
|
48
|
-
import { faAngleDown, faAngleRight } from '@fortawesome/free-solid-svg-icons'
|
|
49
48
|
import { inject, ref, useAttrs } from 'vue'
|
|
50
49
|
import { useI18n } from 'vue-i18n'
|
|
51
50
|
import type { RouteLocationRaw } from 'vue-router'
|
|
@@ -56,7 +55,7 @@ defineOptions({
|
|
|
56
55
|
|
|
57
56
|
defineProps<{
|
|
58
57
|
route: RouteLocationRaw
|
|
59
|
-
icon?:
|
|
58
|
+
icon?: IconName
|
|
60
59
|
active?: boolean
|
|
61
60
|
}>()
|
|
62
61
|
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { TablePaginationSize } from '@core/components/ui/table-pagination/UiTablePagination.vue'
|
|
1
2
|
import { useRouteQuery } from '@core/composables/route-query.composable'
|
|
3
|
+
import { useUiStore } from '@core/stores/ui.store.ts'
|
|
2
4
|
import { clamp, useLocalStorage } from '@vueuse/core'
|
|
3
5
|
import { computed, type MaybeRefOrGetter, toValue } from 'vue'
|
|
4
6
|
|
|
@@ -60,7 +62,10 @@ export function usePagination<T>(id: string, _records: MaybeRefOrGetter<T[]>) {
|
|
|
60
62
|
startIndex.value = records.value.length - 1
|
|
61
63
|
}
|
|
62
64
|
|
|
65
|
+
const uiStore = useUiStore()
|
|
66
|
+
|
|
63
67
|
const paginationBindings = computed(() => ({
|
|
68
|
+
size: (uiStore.isMobile ? 'small' : 'medium') as TablePaginationSize,
|
|
64
69
|
showBy: showBy.value,
|
|
65
70
|
'onUpdate:showBy': (value: number) => (showBy.value = value),
|
|
66
71
|
from: Math.max(0, startIndex.value + 1),
|
package/lib/i18n.ts
CHANGED
package/lib/icons/fa-icons.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { defineIconPack } from '@core/packages/icon/define-icon-pack.ts'
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
faBuilding,
|
|
4
|
+
faFile,
|
|
5
|
+
faFolderClosed,
|
|
6
|
+
faFolderOpen,
|
|
7
|
+
faSquareCheck,
|
|
8
|
+
faCopy,
|
|
9
|
+
} from '@fortawesome/free-regular-svg-icons'
|
|
3
10
|
import {
|
|
4
11
|
faAlignLeft,
|
|
5
12
|
faAngleDoubleLeft,
|
|
@@ -21,6 +28,9 @@ import {
|
|
|
21
28
|
faCaretDown,
|
|
22
29
|
faCaretUp,
|
|
23
30
|
faCheck,
|
|
31
|
+
faCheckCircle,
|
|
32
|
+
faChevronDown,
|
|
33
|
+
faChevronUp,
|
|
24
34
|
faCircle,
|
|
25
35
|
faCircleCheck,
|
|
26
36
|
faCircleMinus,
|
|
@@ -31,7 +41,6 @@ import {
|
|
|
31
41
|
faClose,
|
|
32
42
|
faCode,
|
|
33
43
|
faComments,
|
|
34
|
-
faCopy,
|
|
35
44
|
faDatabase,
|
|
36
45
|
faDesktop,
|
|
37
46
|
faDisplay,
|
|
@@ -41,17 +50,24 @@ import {
|
|
|
41
50
|
faEdit,
|
|
42
51
|
faEllipsis,
|
|
43
52
|
faEllipsisVertical,
|
|
53
|
+
faEraser,
|
|
54
|
+
faExclamation,
|
|
55
|
+
faExclamationCircle,
|
|
44
56
|
faExternalLink,
|
|
45
57
|
faEyeSlash,
|
|
46
58
|
faFileCsv,
|
|
47
59
|
faFileExport,
|
|
48
60
|
faFilter,
|
|
61
|
+
faFloppyDisk,
|
|
49
62
|
faFont,
|
|
50
63
|
faGear,
|
|
51
64
|
faHashtag,
|
|
52
65
|
faHeadset,
|
|
66
|
+
faInfo,
|
|
67
|
+
faInfoCircle,
|
|
53
68
|
faKeyboard,
|
|
54
69
|
faLayerGroup,
|
|
70
|
+
faLink,
|
|
55
71
|
faList,
|
|
56
72
|
faLock,
|
|
57
73
|
faLockOpen,
|
|
@@ -74,8 +90,18 @@ import {
|
|
|
74
90
|
faSatellite,
|
|
75
91
|
faServer,
|
|
76
92
|
faSliders,
|
|
93
|
+
faSquare,
|
|
94
|
+
faSquareCaretDown,
|
|
95
|
+
faStar,
|
|
96
|
+
faStop,
|
|
97
|
+
faTags,
|
|
98
|
+
faThumbTack,
|
|
99
|
+
faThumbTackSlash,
|
|
77
100
|
faTrash,
|
|
101
|
+
faTriangleExclamation,
|
|
78
102
|
faUpRightAndDownLeftFromCenter,
|
|
103
|
+
faUpRightFromSquare,
|
|
104
|
+
faWarning,
|
|
79
105
|
faXmark,
|
|
80
106
|
} from '@fortawesome/free-solid-svg-icons'
|
|
81
107
|
|
|
@@ -101,6 +127,9 @@ export const faIcons = defineIconPack({
|
|
|
101
127
|
'caret-down': { icon: faCaretDown },
|
|
102
128
|
'caret-up': { icon: faCaretUp },
|
|
103
129
|
check: { icon: faCheck },
|
|
130
|
+
'check-circle': { icon: faCheckCircle },
|
|
131
|
+
'chevron-down': { icon: faChevronDown },
|
|
132
|
+
'chevron-up': { icon: faChevronUp },
|
|
104
133
|
circle: { icon: faCircle },
|
|
105
134
|
'circle-check': { icon: faCircleCheck },
|
|
106
135
|
'circle-minus': { icon: faCircleMinus },
|
|
@@ -121,20 +150,27 @@ export const faIcons = defineIconPack({
|
|
|
121
150
|
edit: { icon: faEdit },
|
|
122
151
|
ellipsis: { icon: faEllipsis },
|
|
123
152
|
'ellipsis-vertical': { icon: faEllipsisVertical },
|
|
153
|
+
eraser: { icon: faEraser },
|
|
154
|
+
exclamation: { icon: faExclamation },
|
|
155
|
+
'exclamation-circle': { icon: faExclamationCircle },
|
|
124
156
|
'external-link': { icon: faExternalLink },
|
|
125
157
|
'eye-slash': { icon: faEyeSlash },
|
|
126
158
|
file: { icon: faFile },
|
|
127
159
|
'file-csv': { icon: faFileCsv },
|
|
128
160
|
'file-export': { icon: faFileExport },
|
|
129
161
|
filter: { icon: faFilter },
|
|
162
|
+
'floppy-disk': { icon: faFloppyDisk },
|
|
130
163
|
'folder-closed': { icon: faFolderClosed },
|
|
131
164
|
'folder-open': { icon: faFolderOpen },
|
|
132
165
|
font: { icon: faFont },
|
|
133
166
|
gear: { icon: faGear },
|
|
134
167
|
hashtag: { icon: faHashtag },
|
|
135
168
|
headset: { icon: faHeadset },
|
|
169
|
+
info: { icon: faInfo },
|
|
170
|
+
'info-circle': { icon: faInfoCircle },
|
|
136
171
|
keyboard: { icon: faKeyboard },
|
|
137
172
|
'layer-group': { icon: faLayerGroup },
|
|
173
|
+
link: { icon: faLink },
|
|
138
174
|
list: { icon: faList },
|
|
139
175
|
lock: { icon: faLock },
|
|
140
176
|
'lock-open': { icon: faLockOpen },
|
|
@@ -157,8 +193,18 @@ export const faIcons = defineIconPack({
|
|
|
157
193
|
satellite: { icon: faSatellite },
|
|
158
194
|
server: { icon: faServer },
|
|
159
195
|
sliders: { icon: faSliders },
|
|
196
|
+
square: { icon: faSquare },
|
|
197
|
+
'square-caret-down': { icon: faSquareCaretDown },
|
|
160
198
|
'square-check': { icon: faSquareCheck },
|
|
199
|
+
star: { icon: faStar },
|
|
200
|
+
stop: { icon: faStop },
|
|
201
|
+
tags: { icon: faTags },
|
|
202
|
+
'thumb-tack': { icon: faThumbTack },
|
|
203
|
+
'thumb-tack-slash': { icon: faThumbTackSlash },
|
|
161
204
|
trash: { icon: faTrash },
|
|
205
|
+
'triangle-exclamation': { icon: faTriangleExclamation },
|
|
162
206
|
'up-right-and-down-left-from-center': { icon: faUpRightAndDownLeftFromCenter },
|
|
207
|
+
'up-right-from-square': { icon: faUpRightFromSquare },
|
|
208
|
+
warning: { icon: faWarning },
|
|
163
209
|
xmark: { icon: faXmark },
|
|
164
210
|
})
|
package/lib/icons/index.ts
CHANGED
|
@@ -13,3 +13,7 @@ export const icons = defineIconPack({
|
|
|
13
13
|
export type IconName = Exclude<keyof typeof icons, typeof ICON_SYMBOL>
|
|
14
14
|
|
|
15
15
|
export type ObjectIconName = Extract<IconName, `object:${string}`>
|
|
16
|
+
|
|
17
|
+
export function icon<TName extends IconName>(name: TName): TName {
|
|
18
|
+
return name
|
|
19
|
+
}
|
|
@@ -8,6 +8,8 @@ import {
|
|
|
8
8
|
faExclamation,
|
|
9
9
|
faInfo,
|
|
10
10
|
faMinus,
|
|
11
|
+
faMoon,
|
|
12
|
+
faPause,
|
|
11
13
|
faPlay,
|
|
12
14
|
faStar,
|
|
13
15
|
faStop,
|
|
@@ -51,6 +53,10 @@ export const legacyIcons = defineIconPack({
|
|
|
51
53
|
color: 'var(--color-info-item-base)',
|
|
52
54
|
},
|
|
53
55
|
'legend-circle': { icon: faCircle, size: 8 },
|
|
56
|
+
paused: {
|
|
57
|
+
icon: faPause,
|
|
58
|
+
color: 'var(--color-brand-item-base)',
|
|
59
|
+
},
|
|
54
60
|
primary: [
|
|
55
61
|
{
|
|
56
62
|
icon: faCircle,
|
|
@@ -77,4 +83,8 @@ export const legacyIcons = defineIconPack({
|
|
|
77
83
|
size: 8,
|
|
78
84
|
},
|
|
79
85
|
]),
|
|
86
|
+
suspended: {
|
|
87
|
+
icon: faMoon,
|
|
88
|
+
color: 'var(--color-info-item-base)',
|
|
89
|
+
},
|
|
80
90
|
})
|
|
@@ -156,7 +156,7 @@ export const objectIcons = defineIconPack({
|
|
|
156
156
|
},
|
|
157
157
|
{ icon: getStatusIcon(state) },
|
|
158
158
|
]),
|
|
159
|
-
host: defineIcon([['running', 'halted', 'disabled', 'muted', 'unknown']], state => [
|
|
159
|
+
host: defineIcon([['running', 'halted', 'disabled', 'muted', 'unknown', 'maintenance']], state => [
|
|
160
160
|
{
|
|
161
161
|
icon: faServer,
|
|
162
162
|
color: getMainColor(state),
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
}"
|
|
10
10
|
accent="brand"
|
|
11
11
|
size="medium"
|
|
12
|
-
|
|
12
|
+
icon="fa:bars"
|
|
13
13
|
class="sidebar-toggle"
|
|
14
14
|
:target-scale="1.8"
|
|
15
15
|
@click="sidebarStore.toggleExpand()"
|
|
@@ -48,7 +48,6 @@ import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
|
|
|
48
48
|
import { vTooltip } from '@core/directives/tooltip.directive'
|
|
49
49
|
import { useSidebarStore } from '@core/stores/sidebar.store'
|
|
50
50
|
import { useUiStore } from '@core/stores/ui.store'
|
|
51
|
-
import { faBars } from '@fortawesome/free-solid-svg-icons'
|
|
52
51
|
import { useI18n } from 'vue-i18n'
|
|
53
52
|
|
|
54
53
|
const { t } = useI18n()
|