@xen-orchestra/web-core 0.20.0 → 0.21.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/assets/all-done.svg +62 -0
- package/lib/assets/all-good.svg +113 -0
- package/lib/assets/error.svg +57 -372
- package/lib/assets/no-data.svg +190 -65
- package/lib/assets/not-found.svg +446 -126
- package/lib/assets/offline.svg +118 -0
- package/lib/assets/under-construction.svg +245 -193
- package/lib/assets/zoom.svg +85 -0
- package/lib/components/backup-state/VtsBackupState.vue +20 -17
- package/lib/components/cell-object/VtsCellObject.vue +4 -1
- package/lib/components/console/VtsActionsConsole.vue +7 -4
- package/lib/components/console/VtsClipboardConsole.vue +9 -6
- package/lib/components/copy-button/VtsCopyButton.vue +7 -14
- package/lib/components/dropdown/DropdownTitle.vue +5 -2
- package/lib/components/icon/NewVtsIcon.vue +49 -0
- package/lib/components/input-group/VtsInputGroup.vue +41 -0
- package/lib/components/input-wrapper/VtsInputWrapper.vue +2 -2
- package/lib/components/layout/VtsLayoutSidebar.vue +6 -3
- package/lib/components/linear-chart/VtsLinearChart.vue +4 -0
- package/lib/components/object-icon/VtsObjectIcon.vue +22 -0
- package/lib/components/quick-info-card/VtsQuickInfoCard.vue +4 -1
- package/lib/components/select/VtsOption.vue +10 -6
- package/lib/components/select/VtsSelect.vue +74 -50
- package/lib/components/state-hero/VtsAllDoneHero.vue +16 -0
- package/lib/components/state-hero/VtsAllGoodHero.vue +16 -0
- package/lib/components/state-hero/VtsComingSoonHero.vue +4 -1
- package/lib/components/state-hero/VtsErrorNoDataHero.vue +4 -1
- package/lib/components/state-hero/VtsLoadingHero.vue +4 -1
- package/lib/components/state-hero/VtsNoDataHero.vue +4 -1
- package/lib/components/state-hero/VtsNoSelectionHero.vue +4 -1
- package/lib/components/state-hero/VtsObjectNotFoundHero.vue +4 -1
- package/lib/components/state-hero/VtsOfflineHero.vue +16 -0
- package/lib/components/state-hero/VtsPageNotFoundHero.vue +4 -1
- package/lib/components/state-hero/VtsStateHero.vue +10 -1
- package/lib/components/table/ColumnTitle.vue +2 -2
- package/lib/components/task/VtsQuickTaskButton.vue +4 -1
- package/lib/components/task/VtsQuickTaskList.vue +5 -2
- package/lib/components/task/VtsQuickTaskTabBar.vue +8 -5
- package/lib/components/ui/card-numbers/UiCardNumbers.vue +15 -33
- package/lib/components/ui/character-limit/UiCharacterLimit.vue +4 -1
- package/lib/components/ui/input/UiInput.vue +2 -2
- package/lib/components/ui/label/UiLabel.vue +4 -1
- package/lib/components/ui/progress-bar/UiProgressBar.vue +5 -2
- package/lib/components/ui/query-search-bar/UiQuerySearchBar.vue +9 -6
- package/lib/components/ui/quick-task-item/UiQuickTaskItem.vue +6 -3
- package/lib/components/ui/stacked-bar/StackedBarSegment.vue +4 -1
- package/lib/components/ui/table-pagination/UiTablePagination.vue +6 -3
- package/lib/components/ui/text-area/UiTextarea.vue +4 -1
- package/lib/components/ui/top-bottom-table/UiTopBottomTable.vue +6 -3
- package/lib/components/ui/tree-item-label/UiTreeItemLabel.vue +4 -1
- package/lib/composables/local-time-ago.composable.ts +53 -0
- package/lib/composables/locale-time-ago.composable.ts +53 -0
- package/lib/icons/fa-icons.ts +164 -0
- package/lib/icons/index.ts +15 -0
- package/lib/icons/legacy-icons.ts +80 -0
- package/lib/icons/object-icons.ts +187 -0
- package/lib/layouts/CoreLayout.vue +7 -3
- package/lib/locales/cs.json +73 -7
- package/lib/locales/de.json +5 -1
- package/lib/locales/en.json +33 -3
- package/lib/locales/es.json +9 -5
- package/lib/locales/fr.json +32 -2
- package/lib/locales/it.json +1 -1
- package/lib/locales/nl.json +51 -9
- package/lib/locales/ru.json +28 -1
- package/lib/locales/sv.json +77 -13
- package/lib/packages/collection/README.md +23 -18
- package/lib/packages/collection/create-collection.ts +22 -21
- package/lib/packages/collection/create-item.ts +21 -20
- package/lib/packages/collection/create-use-subset.ts +23 -0
- package/lib/packages/collection/guess-item-id.ts +26 -16
- package/lib/packages/collection/index.ts +4 -0
- package/lib/packages/collection/types.ts +65 -37
- package/lib/packages/collection/use-collection.ts +68 -18
- package/lib/packages/collection/use-flag-registry.ts +38 -17
- package/lib/packages/form-select/guess-label.ts +45 -0
- package/lib/packages/form-select/guess-value.ts +23 -0
- package/lib/packages/form-select/index.ts +6 -0
- package/lib/packages/form-select/normalize-search-term.ts +11 -0
- package/lib/packages/form-select/types.ts +90 -42
- package/lib/packages/form-select/use-form-option-controller.ts +7 -3
- package/lib/packages/form-select/use-form-select-controller.ts +38 -27
- package/lib/packages/form-select/use-form-select-keyboard-navigation.ts +1 -1
- package/lib/packages/form-select/use-form-select.ts +308 -130
- package/lib/packages/icon/DisplayIcon.vue +25 -0
- package/lib/packages/icon/DisplayIconAny.vue +16 -0
- package/lib/packages/icon/DisplayIconSingle.vue +35 -0
- package/lib/packages/icon/DisplayIconStack.vue +34 -0
- package/lib/packages/icon/README.md +286 -0
- package/lib/packages/icon/create-icon-bindings.ts +27 -0
- package/lib/packages/icon/define-icon-pack.ts +23 -0
- package/lib/packages/icon/define-icon-single.ts +17 -0
- package/lib/packages/icon/define-icon-stack.ts +20 -0
- package/lib/packages/icon/define-icon.ts +40 -0
- package/lib/packages/icon/generate-icon-variants.ts +17 -0
- package/lib/packages/icon/index.ts +8 -0
- package/lib/packages/icon/is-icon-stack.ts +5 -0
- package/lib/packages/icon/merge-icons.ts +25 -0
- package/lib/packages/icon/merge-transforms.ts +12 -0
- package/lib/packages/icon/normalize-icon.ts +25 -0
- package/lib/packages/icon/to-tuple.ts +7 -0
- package/lib/packages/icon/types.ts +72 -0
- package/lib/packages/job/README.md +2 -2
- package/lib/packages/mapper/README.md +166 -0
- package/lib/packages/mapper/convert-to-map.ts +5 -0
- package/lib/packages/mapper/create-mapper.ts +30 -0
- package/lib/packages/mapper/index.ts +4 -0
- package/lib/packages/mapper/types.ts +1 -0
- package/lib/packages/mapper/use-mapper.ts +31 -0
- package/lib/stores/sidebar.store.ts +1 -1
- package/lib/types/chart.ts +2 -2
- package/lib/types/utility.type.ts +9 -0
- package/lib/utils/object.util.ts +16 -0
- package/lib/utils/size.util.ts +4 -2
- package/package.json +2 -1
- package/lib/components/backup-item/VtsBackupItem.vue +0 -47
- package/lib/composables/mapper.composable.md +0 -74
- package/lib/composables/mapper.composable.ts +0 -18
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg id="Zoom" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 397.13 396.85">
|
|
3
|
+
<defs>
|
|
4
|
+
<style>
|
|
5
|
+
.cls-1 {
|
|
6
|
+
fill: #eaea92;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.cls-2, .cls-3, .cls-4 {
|
|
10
|
+
fill: #8f84ff;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.cls-2, .cls-5 {
|
|
14
|
+
opacity: .3;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.cls-6, .cls-5 {
|
|
18
|
+
fill: #fff;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.cls-3 {
|
|
22
|
+
opacity: .14;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.cls-7 {
|
|
26
|
+
fill: #181849;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.cls-8 {
|
|
30
|
+
fill: #1a1b38;
|
|
31
|
+
}
|
|
32
|
+
</style>
|
|
33
|
+
</defs>
|
|
34
|
+
<path class="cls-4" d="M129.55,173.68c-6.44,2.53-12.65,5.45-18.79,8.51-6.13,3.06-12.16,6.31-18.12,9.68-5.96,3.37-11.83,6.88-17.56,10.64-2.87,1.87-5.7,3.82-8.49,5.83-2.79,2.02-5.54,4.09-8.18,6.36-1.46,1.25-1.62,3.44-.37,4.9.95,1.11,2.47,1.47,3.78,1.02,3.29-1.14,6.47-2.48,9.62-3.87,3.14-1.4,6.25-2.86,9.31-4.4,6.13-3.06,12.13-6.36,18.04-9.82,5.91-3.45,11.75-7.02,17.48-10.78,5.73-3.76,11.39-7.66,16.81-11.95,1.55-1.22,1.81-3.47.59-5.02-1-1.26-2.68-1.67-4.11-1.11Z"/>
|
|
35
|
+
<path class="cls-3" d="M194.07,50.23c74.01-2.19,138.12,51.52,147.8,121.98,10.59,77.04-47.69,146.36-119.41,157.46-89.2,13.81-175.73-66.08-167.96-152.75,5.85-65.3,64.33-124.47,139.57-126.69Z"/>
|
|
36
|
+
<path class="cls-8" d="M90.67,198.68c.14.05.25.11.35.19.1.02.2.04.3.06.46.09.46.85,0,.93-.1.02-.2.04-.3.06-.1.08-.21.14-.35.19-.46.16-.93-.25-.93-.71,0-.46.47-.87.93-.71Z"/>
|
|
37
|
+
<path class="cls-4" d="M162.94,225.43h0c-1.62-2.75-4.97-4.27-8.07-3.67l-48.48,9.41c-3.68.71-5.75,4.14-4.62,7.64l32.93,102.68c1.12,3.51,5.02,5.77,8.7,5.06l153.84-29.87c3.68-.71,5.75-4.14,4.62-7.64l-27.66-86.24c-1.12-3.51-5.02-5.77-8.7-5.06l-83.71,16.25c-7.25,1.41-15.06-2.14-18.85-8.56Z"/>
|
|
38
|
+
<polygon class="cls-6" points="299.39 311.24 138.65 342.45 108.5 236.07 269.23 204.87 299.39 311.24"/>
|
|
39
|
+
<polygon class="cls-1" points="299.39 311.24 138.65 342.45 111.03 235.58 269.23 204.87 299.39 311.24"/>
|
|
40
|
+
<polygon class="cls-6" points="299.39 311.24 138.65 342.45 111.46 231.94 272.2 200.73 299.39 311.24"/>
|
|
41
|
+
<polygon class="cls-6" points="299.39 311.24 138.65 342.45 114.8 231.29 272.2 200.73 299.39 311.24"/>
|
|
42
|
+
<polygon class="cls-1" points="299.39 280.37 138.65 311.57 115.44 197.14 276.18 165.94 299.39 280.37"/>
|
|
43
|
+
<polygon class="cls-1" points="299.39 311.24 138.65 342.45 120.12 229.37 279.82 198.36 299.39 311.24"/>
|
|
44
|
+
<polygon class="cls-6" points="300.96 307.85 138.65 342.45 121.79 229.06 282.81 198.64 300.96 307.85"/>
|
|
45
|
+
<polygon class="cls-1" points="299.39 311.24 138.65 342.45 124.91 231.07 285.65 199.87 299.39 311.24"/>
|
|
46
|
+
<polygon class="cls-6" points="299.39 311.24 138.65 342.45 126.31 231.78 287.04 200.57 299.39 311.24"/>
|
|
47
|
+
<path class="cls-4" d="M199.21,225.47h0c-.69-3-3.38-4.71-6.48-4.1l-48.48,9.41c-3.68.71-6.66,4.39-6.67,8.21l-.11,101.8c0,3.82,2.97,6.33,6.65,5.62l153.84-29.87c3.68-.71,6.66-4.39,6.67-8.21l.09-83.92c0-3.82-2.97-6.33-6.65-5.62l-83.71,16.25c-7.25,1.41-13.53-2.57-15.15-9.58Z"/>
|
|
48
|
+
<path class="cls-2" d="M153.88,195.95c26.94,15.96,61.72,7.06,77.68-19.88,15.96-26.94,7.06-61.72-19.88-77.68-26.94-15.96-61.72-7.07-77.68,19.87-15.96,26.94-7.06,61.72,19.88,77.68Z"/>
|
|
49
|
+
<path class="cls-5" d="M181.76,90.48l27.36,106.91c.76-.4,1.52-.82,2.26-1.25,4.76-2.77,9.13-6.25,12.98-10.41h0s-23.63-92.34-23.63-92.34c-6.21-2.08-12.62-3.03-18.97-2.91Z"/>
|
|
50
|
+
<path class="cls-5" d="M147.71,102.6l25.72,100.51c8.64,1.45,17.42.84,25.66-1.64l-28.09-109.76c-8.42,1.78-16.41,5.47-23.3,10.89Z"/>
|
|
51
|
+
<path class="cls-4" d="M212.83,199.46c-28.88,16.6-65.74,6.64-82.34-22.24-16.6-28.88-6.64-65.74,22.24-82.34,28.88-16.6,65.74-6.64,82.34,22.24,16.6,28.88,6.64,65.75-22.23,82.34ZM210.38,195.19c26.52-15.24,35.66-49.09,20.42-75.62-15.24-26.51-49.09-35.66-75.61-20.42-26.52,15.24-35.66,49.09-20.42,75.61,15.24,26.52,49.09,35.67,75.61,20.43Z"/>
|
|
52
|
+
<path class="cls-4" d="M133.07,179.81c-5.43,4.3-11.08,8.19-16.81,11.95-5.74,3.76-11.58,7.33-17.49,10.78-.95.56-1.91,1.11-2.87,1.66-4.98,2.86-10.02,5.59-15.17,8.16-3.06,1.54-6.17,3-9.31,4.4-3.15,1.39-6.33,2.73-9.62,3.87-1.3.45-2.82.09-3.77-1.02-1.25-1.46-1.08-3.65.37-4.9,2.65-2.27,5.4-4.34,8.19-6.36,2.79-2.01,5.61-3.96,8.48-5.83,5.74-3.76,11.61-7.28,17.57-10.65,1.23-.69,2.46-1.38,3.7-2.07,4.75-2.63,9.55-5.18,14.42-7.61,6.13-3.06,12.34-5.98,18.78-8.51,1.43-.56,3.12-.15,4.11,1.11,1.23,1.55.97,3.8-.58,5.02Z"/>
|
|
53
|
+
<path class="cls-6" d="M278.46,132.05l-3,1.68,1.68,3-3,1.68,1.68,3-3,1.68,1.68,3-3,1.68,1.68,3-3,1.68,1.68,3-3,1.68,1.68,3-3,1.68,1.68,3-3,1.68,1.68,3-3,1.68,1.68,3-3,1.68,1.68,3-3,1.68,1.68,3,51.04-28.52-1.68-3-1.68-3-3,1.68-1.68-3-3,1.68-1.68-3-3,1.68-1.68-3,6.01-3.36-1.68-3,6.01-3.36-1.68-3,3-1.68-3.35-6-3,1.68-1.68-3-6.01,3.36,1.68,3-6.01,3.36,1.68,3-3,1.68-6.71-12.01-3,1.68-3,1.68,1.68,3Z"/>
|
|
54
|
+
<rect class="cls-8" x="259.33" y="166.05" width="58.47" height="3.44" transform="translate(-45.17 162.06) rotate(-29.19)"/>
|
|
55
|
+
<rect class="cls-8" x="264.16" y="174.79" width="3.44" height="3.44" transform="translate(-52.32 152.1) rotate(-29.19)"/>
|
|
56
|
+
<rect class="cls-8" x="265.48" y="170.11" width="3.44" height="3.44" transform="translate(-49.87 152.15) rotate(-29.19)"/>
|
|
57
|
+
<rect class="cls-8" x="266.81" y="165.43" width="3.44" height="3.44" transform="translate(-47.42 152.2) rotate(-29.19)"/>
|
|
58
|
+
<rect class="cls-8" x="268.13" y="160.75" width="3.44" height="3.44" transform="translate(-44.97 152.26) rotate(-29.19)"/>
|
|
59
|
+
<rect class="cls-8" x="269.46" y="156.07" width="3.44" height="3.44" transform="translate(-42.52 152.31) rotate(-29.19)"/>
|
|
60
|
+
<rect class="cls-8" x="270.78" y="151.39" width="3.44" height="3.44" transform="translate(-40.07 152.36) rotate(-29.19)"/>
|
|
61
|
+
<rect class="cls-8" x="272.11" y="146.71" width="3.44" height="3.44" transform="translate(-37.62 152.41) rotate(-29.19)"/>
|
|
62
|
+
<rect class="cls-8" x="273.43" y="142.03" width="3.44" height="3.44" transform="translate(-35.16 152.46) rotate(-29.19)"/>
|
|
63
|
+
<rect class="cls-8" x="274.76" y="137.35" width="3.44" height="3.44" transform="translate(-32.71 152.52) rotate(-29.19)"/>
|
|
64
|
+
<rect class="cls-8" x="276.08" y="132.67" width="3.44" height="3.44" transform="translate(-30.26 152.57) rotate(-29.19)"/>
|
|
65
|
+
<rect class="cls-8" x="277.41" y="127.99" width="3.44" height="3.44" transform="translate(-27.81 152.62) rotate(-29.19)"/>
|
|
66
|
+
<rect class="cls-8" x="283.77" y="125.44" width="3.44" height="17.19" transform="translate(-29.11 156.27) rotate(-29.19)"/>
|
|
67
|
+
<rect class="cls-8" x="290.12" y="136.64" width="3.44" height="3.44" transform="translate(-30.42 159.92) rotate(-29.19)"/>
|
|
68
|
+
<rect class="cls-8" x="295.15" y="145.65" width="3.44" height="3.44" transform="translate(-34.17 163.52) rotate(-29.19)"/>
|
|
69
|
+
<rect class="cls-8" x="296.26" y="140.13" width="6.88" height="3.44" transform="translate(-31.12 164.2) rotate(-29.19)"/>
|
|
70
|
+
<rect class="cls-8" x="300.59" y="133.77" width="6.88" height="3.44" transform="translate(-27.47 165.5) rotate(-29.19)"/>
|
|
71
|
+
<rect class="cls-8" x="304.3" y="125.04" width="3.44" height="6.88" transform="translate(-23.79 165.58) rotate(-29.19)"/>
|
|
72
|
+
<rect class="cls-8" x="291.23" y="131.13" width="6.88" height="3.44" transform="translate(-27.37 160.6) rotate(-29.19)"/>
|
|
73
|
+
<rect class="cls-8" x="295.56" y="124.77" width="6.88" height="3.44" transform="translate(-23.72 161.9) rotate(-29.19)"/>
|
|
74
|
+
<rect class="cls-8" x="299.83" y="146.97" width="3.44" height="3.44" transform="translate(-34.22 165.97) rotate(-29.19)"/>
|
|
75
|
+
<rect class="cls-8" x="304.51" y="148.3" width="3.44" height="3.44" transform="translate(-34.27 168.42) rotate(-29.19)"/>
|
|
76
|
+
<rect class="cls-8" x="309.19" y="149.62" width="3.44" height="3.44" transform="translate(-34.33 170.87) rotate(-29.19)"/>
|
|
77
|
+
<polygon class="cls-7" points="173.4 252.35 171.52 258.69 165.18 260.57 171.52 262.45 173.4 268.79 175.28 262.45 181.62 260.57 175.28 258.69 173.4 252.35"/>
|
|
78
|
+
<polygon class="cls-7" points="283.94 292.49 282.82 296.27 279.05 297.39 282.82 298.51 283.94 302.28 285.06 298.51 288.84 297.39 285.06 296.27 283.94 292.49"/>
|
|
79
|
+
<polygon class="cls-7" points="244.55 182.48 242.67 188.82 236.33 190.7 242.67 192.58 244.55 198.92 246.43 192.58 252.77 190.7 246.43 188.82 244.55 182.48"/>
|
|
80
|
+
<path class="cls-6" d="M222.84,291.45c.62.17,1.24.34,1.85.5-6.22,2.4-12.01,4.07-16.61,4.88-5.54.98-9.34.71-10.07-1.05-.72-1.73,1.57-4.54,6.04-7.74.07.37.13.76.23,1.13-3.52,2.54-5.25,4.66-4.7,5.96.55,1.32,3.47,1.51,7.85.77,4.11-.7,9.5-2.23,15.42-4.45Z"/>
|
|
81
|
+
<path class="cls-6" d="M247.13,280.34c-4.49,3.29-11.25,6.99-19.08,10.26-.52.22-1.04.43-1.56.64-.61-.15-1.23-.32-1.85-.48.98-.38,1.98-.79,2.98-1.2,8.13-3.39,15.07-7.18,19.31-10.34,3.21-2.39,4.88-4.43,4.36-5.67-.51-1.22-3.06-1.48-6.92-.91-.19-.32-.39-.64-.6-.95,5-.77,8.4-.43,9.08,1.21.7,1.67-1.53,4.38-5.72,7.45Z"/>
|
|
82
|
+
<path class="cls-6" d="M253.1,292.89c-.49,1.74-3.92,2.49-9.11,2.3-5.1-.19-11.91-1.29-19.31-3.23-.61-.16-1.23-.33-1.85-.5-.06-.02-.12-.03-.18-.05-7.81-2.19-14.68-4.89-19.52-7.5-4.95-2.67-7.77-5.24-7.25-7.07.51-1.8,4.05-2.59,9.54-2.32-.17.33-.37.68-.52,1.03-4.33-.19-7,.4-7.39,1.76-.39,1.38,1.79,3.34,5.68,5.47,4.62,2.53,11.67,5.28,19.76,7.55.56.16,1.11.31,1.66.46.62.17,1.24.33,1.85.48,7.1,1.79,13.5,2.8,18.05,2.93,4,.12,6.57-.45,6.94-1.74.36-1.28-1.48-3.06-4.86-5.01.05-.37.09-.74.12-1.11,4.4,2.49,6.85,4.87,6.37,6.58Z"/>
|
|
83
|
+
<path class="cls-6" d="M232.63,304.23c-11.71,3.96-24.46-2.36-28.41-14.07-3.95-11.71,2.36-24.46,14.07-28.41,11.71-3.96,24.46,2.36,28.41,14.07,3.95,11.71-2.36,24.46-14.07,28.41ZM218.74,263.1c-10.97,3.7-16.88,15.64-13.17,26.61,3.7,10.97,15.64,16.88,26.6,13.17,10.97-3.7,16.88-15.64,13.17-26.61-3.7-10.97-15.64-16.88-26.6-13.17Z"/>
|
|
84
|
+
<path class="cls-6" d="M248.48,286.34c.29-1.97.33-3.99.1-6.02,4.16-3.22,5.87-5.83,5.06-7.76-.77-1.86-3.62-2.5-8.47-1.94-5.59-8.92-16.77-13.2-27.17-9.69-6.43,2.17-11.29,6.9-13.84,12.67-5.46-.11-8.52.9-9.11,2.99-.62,2.19,1.8,4.81,7.16,7.78.07,1.19.23,2.39.49,3.58-4.5,3.38-6.36,6.12-5.5,8.16.87,2.08,4.33,2.65,10.29,1.68,5.97,7.23,16.01,10.42,25.41,7.25,5-1.69,9.05-4.92,11.8-8.98,2.85.06,5.06-.17,6.61-.69,1.46-.49,2.34-1.25,2.62-2.25.54-1.94-1.29-4.21-5.45-6.78ZM206.39,289.43c-.37-1.11-.62-2.22-.8-3.34,4.12,1.95,9.09,3.83,14.46,5.45-3.99,1.4-7.77,2.49-10.97,3.16-1.13-1.57-2.05-3.34-2.7-5.26ZM242.76,293.22c-3.78-.26-8.45-1.02-13.52-2.19,6.28-2.67,11.96-5.65,16.33-8.56.1,3.82-.92,7.54-2.82,10.75ZM250.48,273.88c.15.35-.26,1.46-2.47,3.36-.15-.57-.31-1.14-.5-1.7-.27-.79-.57-1.55-.91-2.29,2.73-.18,3.74.29,3.88.62ZM219.02,263.92c10.51-3.55,21.96,2.11,25.51,12.63.31.93.53,1.87.7,2.81-4.39,3.05-10.83,6.43-17.96,9.4-.88.37-1.79.73-2.7,1.09-.46-.12-.91-.25-1.37-.38-6.82-1.91-13.19-4.27-17.85-6.58.05-8.36,5.32-16.16,13.67-18.98ZM198.35,277.52c.13-.45,1.31-1.13,4.8-1.16-.47,1.57-.78,3.19-.91,4.85-3.29-1.99-4.01-3.26-3.89-3.69ZM200.37,294.8c-.18-.44.34-1.73,3.16-3.98.57,1.59,1.29,3.08,2.15,4.46-3.79.48-5.15-.07-5.32-.48ZM231.89,302.06c-7.53,2.54-15.53.34-20.77-4.97,2.79-.63,5.82-1.5,9.01-2.57,1.5-.51,3.04-1.06,4.6-1.66,5.84,1.52,11.44,2.55,16.17,2.98-2.3,2.78-5.36,4.99-9.02,6.22ZM250.63,292.2c-.11.38-1.18,1.02-4.32,1.11.65-1.31,1.17-2.67,1.56-4.08,2.34,1.59,2.86,2.61,2.76,2.97Z"/>
|
|
85
|
+
</svg>
|
|
@@ -1,29 +1,32 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
2
|
+
<UiInfo :accent="state.accent" class="vts-backup-state">
|
|
3
|
+
{{ state.text }}
|
|
4
|
+
</UiInfo>
|
|
3
5
|
</template>
|
|
4
6
|
|
|
5
7
|
<script lang="ts" setup>
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import { computed } from 'vue'
|
|
8
|
+
import UiInfo, { type InfoAccent } from '@core/components/ui/info/UiInfo.vue'
|
|
9
|
+
import { useMapper } from '@core/packages/mapper'
|
|
10
|
+
import { useI18n } from 'vue-i18n'
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
type Props = {
|
|
12
|
+
const { state: _state } = defineProps<{
|
|
14
13
|
state: BackupState
|
|
15
|
-
}
|
|
14
|
+
}>()
|
|
16
15
|
|
|
17
|
-
const
|
|
16
|
+
const { t } = useI18n()
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
success: { icon: faCheckCircle, color: 'success' },
|
|
21
|
-
partial: { icon: faCircleMinus, color: 'warning' },
|
|
22
|
-
failure: { icon: faCircleXmark, color: 'danger' },
|
|
23
|
-
}
|
|
18
|
+
type BackupState = 'success' | 'failure' | 'skipped' | 'interrupted'
|
|
24
19
|
|
|
25
|
-
const
|
|
26
|
-
|
|
20
|
+
const state = useMapper<BackupState, { text: string; accent: InfoAccent }>(
|
|
21
|
+
() => _state,
|
|
22
|
+
{
|
|
23
|
+
success: { text: t('success'), accent: 'success' },
|
|
24
|
+
failure: { text: t('failure'), accent: 'danger' },
|
|
25
|
+
skipped: { text: t('skipped'), accent: 'warning' },
|
|
26
|
+
interrupted: { text: t('interrupted'), accent: 'danger' },
|
|
27
|
+
},
|
|
28
|
+
'failure'
|
|
29
|
+
)
|
|
27
30
|
</script>
|
|
28
31
|
|
|
29
32
|
<style lang="postcss" scoped>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
accent="brand"
|
|
16
16
|
@click="copy(id)"
|
|
17
17
|
>
|
|
18
|
-
{{ copied ?
|
|
18
|
+
{{ copied ? t('core.copied') : t('core.copy-id') }}
|
|
19
19
|
</UiButton>
|
|
20
20
|
</template>
|
|
21
21
|
</div>
|
|
@@ -27,12 +27,15 @@ import UiButton from '@core/components/ui/button/UiButton.vue'
|
|
|
27
27
|
import { vTooltip } from '@core/directives/tooltip.directive'
|
|
28
28
|
import { faCopy } from '@fortawesome/free-solid-svg-icons'
|
|
29
29
|
import { useClipboard } from '@vueuse/core'
|
|
30
|
+
import { useI18n } from 'vue-i18n'
|
|
30
31
|
|
|
31
32
|
defineProps<{
|
|
32
33
|
id?: string
|
|
33
34
|
copiableId?: boolean
|
|
34
35
|
}>()
|
|
35
36
|
|
|
37
|
+
const { t } = useI18n()
|
|
38
|
+
|
|
36
39
|
const { isSupported, copy, copied } = useClipboard()
|
|
37
40
|
</script>
|
|
38
41
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<UiCardTitle>{{
|
|
2
|
+
<UiCardTitle>{{ t('console-actions') }}</UiCardTitle>
|
|
3
3
|
<UiButton
|
|
4
4
|
class="button"
|
|
5
5
|
accent="brand"
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
:left-icon="isFullscreen ? faDownLeftAndUpRightToCenter : faUpRightAndDownLeftFromCenter"
|
|
9
9
|
@click="toggleFullScreen"
|
|
10
10
|
>
|
|
11
|
-
{{
|
|
11
|
+
{{ t(isFullscreen ? 'exit-fullscreen' : 'fullscreen') }}
|
|
12
12
|
</UiButton>
|
|
13
13
|
<UiButton
|
|
14
14
|
class="button"
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
:left-icon="faArrowUpRightFromSquare"
|
|
19
19
|
@click="openInNewTab"
|
|
20
20
|
>
|
|
21
|
-
{{
|
|
21
|
+
{{ t('open-console-in-new-tab') }}
|
|
22
22
|
</UiButton>
|
|
23
23
|
<UiButton
|
|
24
24
|
class="button"
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
:left-icon="faKeyboard"
|
|
29
29
|
@click="sendCtrlAltDel"
|
|
30
30
|
>
|
|
31
|
-
{{
|
|
31
|
+
{{ t('send-ctrl-alt-del') }}
|
|
32
32
|
</UiButton>
|
|
33
33
|
</template>
|
|
34
34
|
|
|
@@ -45,12 +45,15 @@ import {
|
|
|
45
45
|
import { useActiveElement, useMagicKeys, whenever } from '@vueuse/core'
|
|
46
46
|
import { logicAnd } from '@vueuse/math'
|
|
47
47
|
import { computed } from 'vue'
|
|
48
|
+
import { useI18n } from 'vue-i18n'
|
|
48
49
|
import { useRouter } from 'vue-router'
|
|
49
50
|
|
|
50
51
|
defineProps<{
|
|
51
52
|
sendCtrlAltDel: () => void
|
|
52
53
|
}>()
|
|
53
54
|
|
|
55
|
+
const { t } = useI18n()
|
|
56
|
+
|
|
54
57
|
const router = useRouter()
|
|
55
58
|
const uiStore = useUiStore()
|
|
56
59
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="vts-clipboard-console">
|
|
3
|
-
<UiCardTitle>{{
|
|
4
|
-
<UiTextarea v-tooltip="
|
|
3
|
+
<UiCardTitle>{{ t('console-clipboard') }}</UiCardTitle>
|
|
4
|
+
<UiTextarea v-tooltip="t('coming-soon')" accent="brand" disabled :model-value="modelValue" />
|
|
5
5
|
<div class="buttons-container">
|
|
6
|
-
<UiButton v-tooltip="
|
|
7
|
-
{{
|
|
6
|
+
<UiButton v-tooltip="t('coming-soon')" accent="brand" variant="primary" size="medium" disabled>
|
|
7
|
+
{{ t('send') }}
|
|
8
8
|
</UiButton>
|
|
9
|
-
<UiButton v-tooltip="
|
|
10
|
-
{{
|
|
9
|
+
<UiButton v-tooltip="t('coming-soon')" accent="brand" variant="secondary" size="medium" disabled>
|
|
10
|
+
{{ t('receive') }}
|
|
11
11
|
</UiButton>
|
|
12
12
|
</div>
|
|
13
13
|
</div>
|
|
@@ -19,8 +19,11 @@ import UiCardTitle from '@core/components/ui/card-title/UiCardTitle.vue'
|
|
|
19
19
|
import UiTextarea from '@core/components/ui/text-area/UiTextarea.vue'
|
|
20
20
|
import { vTooltip } from '@core/directives/tooltip.directive'
|
|
21
21
|
import { ref } from 'vue'
|
|
22
|
+
import { useI18n } from 'vue-i18n'
|
|
22
23
|
|
|
23
24
|
const modelValue = ref('')
|
|
25
|
+
|
|
26
|
+
const { t } = useI18n()
|
|
24
27
|
</script>
|
|
25
28
|
|
|
26
29
|
<style lang="postcss" scoped>
|
|
@@ -1,29 +1,22 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<UiButtonIcon v-tooltip="copied &&
|
|
2
|
+
<UiButtonIcon v-tooltip="copied && t('core.copied')" :icon size="medium" accent="brand" @click="copy()" />
|
|
3
3
|
</template>
|
|
4
4
|
|
|
5
5
|
<script setup lang="ts">
|
|
6
6
|
import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
|
|
7
7
|
import { vTooltip } from '@core/directives/tooltip.directive'
|
|
8
8
|
import { faCheckCircle, faCopy } from '@fortawesome/free-solid-svg-icons'
|
|
9
|
-
import { useClipboard
|
|
10
|
-
import {
|
|
9
|
+
import { useClipboard } from '@vueuse/core'
|
|
10
|
+
import { computed } from 'vue'
|
|
11
|
+
import { useI18n } from 'vue-i18n'
|
|
11
12
|
|
|
12
13
|
const { value } = defineProps<{
|
|
13
14
|
value: string
|
|
14
15
|
}>()
|
|
15
16
|
|
|
16
|
-
const {
|
|
17
|
+
const { t } = useI18n()
|
|
17
18
|
|
|
18
|
-
const
|
|
19
|
+
const { copy, copied } = useClipboard({ source: () => value })
|
|
19
20
|
|
|
20
|
-
const
|
|
21
|
-
icon.value = faCopy
|
|
22
|
-
}, 1_500) // 1.5s is time to toltips is visible
|
|
23
|
-
|
|
24
|
-
function copyToClipboard() {
|
|
25
|
-
copy(value)
|
|
26
|
-
icon.value = faCheckCircle
|
|
27
|
-
changeIcon()
|
|
28
|
-
}
|
|
21
|
+
const icon = computed(() => (copied.value ? faCheckCircle : faCopy))
|
|
29
22
|
</script>
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
</div>
|
|
11
11
|
<div v-if="onToggleSelectAll" class="buttons">
|
|
12
12
|
<span v-if="selected !== 'all'" @click="emit('toggleSelectAll', true)">
|
|
13
|
-
{{
|
|
13
|
+
{{ t('core.select.all') }}
|
|
14
14
|
</span>
|
|
15
15
|
<span v-if="selected !== 'none'" @click="emit('toggleSelectAll', false)">
|
|
16
|
-
{{
|
|
16
|
+
{{ t('core.select.none') }}
|
|
17
17
|
</span>
|
|
18
18
|
</div>
|
|
19
19
|
</div>
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
<script lang="ts" setup>
|
|
23
23
|
import VtsIcon from '@core/components/icon/VtsIcon.vue'
|
|
24
24
|
import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
|
|
25
|
+
import { useI18n } from 'vue-i18n'
|
|
25
26
|
|
|
26
27
|
withDefaults(
|
|
27
28
|
defineProps<{
|
|
@@ -35,6 +36,8 @@ withDefaults(
|
|
|
35
36
|
const emit = defineEmits<{
|
|
36
37
|
toggleSelectAll: [value: boolean]
|
|
37
38
|
}>()
|
|
39
|
+
|
|
40
|
+
const { t } = useI18n()
|
|
38
41
|
</script>
|
|
39
42
|
|
|
40
43
|
<style lang="postcss" scoped>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<DisplayIcon v-if="icon" class="vts-icon" :class="className" :icon />
|
|
3
|
+
</template>
|
|
4
|
+
|
|
5
|
+
<script lang="ts" setup>
|
|
6
|
+
import { type IconName, icons } from '@core/icons'
|
|
7
|
+
import { DisplayIcon } from '@core/packages/icon'
|
|
8
|
+
import { toVariants } from '@core/utils/to-variants.util.ts'
|
|
9
|
+
import { computed } from 'vue'
|
|
10
|
+
|
|
11
|
+
export type IconSize = 'small' | 'medium' | 'large' | 'current'
|
|
12
|
+
|
|
13
|
+
const { size, name } = defineProps<{
|
|
14
|
+
size: IconSize
|
|
15
|
+
name: IconName
|
|
16
|
+
}>()
|
|
17
|
+
|
|
18
|
+
const className = computed(() =>
|
|
19
|
+
toVariants({
|
|
20
|
+
size: size === 'current' ? undefined : size,
|
|
21
|
+
})
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
const icon = computed(() => {
|
|
25
|
+
const icon = icons[name]
|
|
26
|
+
|
|
27
|
+
if (icon === undefined) {
|
|
28
|
+
console.warn(`Icon "${name}" not found.`)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return icon
|
|
32
|
+
})
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<style lang="postcss" scoped>
|
|
36
|
+
.vts-icon {
|
|
37
|
+
&.size--small {
|
|
38
|
+
font-size: 1.2rem;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
&.size--medium {
|
|
42
|
+
font-size: 1.6rem;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&.size--large {
|
|
46
|
+
font-size: 2rem;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
</style>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="vts-input-group">
|
|
3
|
+
<slot />
|
|
4
|
+
</div>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<style lang="postcss" scoped>
|
|
8
|
+
.vts-input-group {
|
|
9
|
+
display: flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
|
|
12
|
+
:slotted(> .ui-input),
|
|
13
|
+
:slotted(> .vts-select) {
|
|
14
|
+
&:hover {
|
|
15
|
+
z-index: 1;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&:focus-within {
|
|
19
|
+
z-index: 2;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&:not(:first-child) {
|
|
23
|
+
margin-left: -1px;
|
|
24
|
+
|
|
25
|
+
&,
|
|
26
|
+
.ui-input {
|
|
27
|
+
border-start-start-radius: 0;
|
|
28
|
+
border-end-start-radius: 0;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&:not(:last-child) {
|
|
33
|
+
&,
|
|
34
|
+
.ui-input {
|
|
35
|
+
border-start-end-radius: 0;
|
|
36
|
+
border-end-end-radius: 0;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
</style>
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
<script lang="ts" setup>
|
|
21
21
|
import UiInfo, { type InfoAccent } from '@core/components/ui/info/UiInfo.vue'
|
|
22
22
|
import UiLabel, { type LabelAccent } from '@core/components/ui/label/UiLabel.vue'
|
|
23
|
-
import { useMapper } from '@core/composables/mapper.composable'
|
|
24
23
|
import { useRanked } from '@core/composables/ranked.composable.ts'
|
|
24
|
+
import { useMapper } from '@core/packages/mapper/use-mapper.ts'
|
|
25
25
|
import type { MaybeArray } from '@core/types/utility.type'
|
|
26
26
|
import { IK_INPUT_WRAPPER_CONTROLLER } from '@core/utils/injection-keys.util'
|
|
27
27
|
import { toArray } from '@core/utils/to-array.utils'
|
|
@@ -70,7 +70,7 @@ const labelAccent = useMapper<InfoAccent, LabelAccent>(
|
|
|
70
70
|
danger: 'danger',
|
|
71
71
|
muted: 'neutral',
|
|
72
72
|
},
|
|
73
|
-
'
|
|
73
|
+
'info'
|
|
74
74
|
)
|
|
75
75
|
|
|
76
76
|
const wrapperController = reactive({
|
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
<div v-if="!ui.isMobile" class="lock">
|
|
7
7
|
<UiButtonIcon
|
|
8
8
|
v-tooltip="{
|
|
9
|
-
content: sidebar.isLocked ?
|
|
9
|
+
content: sidebar.isLocked ? t('core.sidebar.unlock') : t('core.sidebar.lock'),
|
|
10
10
|
placement: 'right',
|
|
11
11
|
}"
|
|
12
12
|
accent="brand"
|
|
13
13
|
size="medium"
|
|
14
|
-
:icon="sidebar.isLocked ?
|
|
14
|
+
:icon="sidebar.isLocked ? faThumbTackSlash : faThumbTack"
|
|
15
15
|
@click="sidebar.toggleLock()"
|
|
16
16
|
/>
|
|
17
17
|
</div>
|
|
@@ -38,7 +38,8 @@ import UiButtonIcon from '@core/components/ui/button-icon/UiButtonIcon.vue'
|
|
|
38
38
|
import { vTooltip } from '@core/directives/tooltip.directive'
|
|
39
39
|
import { useSidebarStore } from '@core/stores/sidebar.store'
|
|
40
40
|
import { useUiStore } from '@core/stores/ui.store'
|
|
41
|
-
import {
|
|
41
|
+
import { faThumbTack, faThumbTackSlash } from '@fortawesome/free-solid-svg-icons'
|
|
42
|
+
import { useI18n } from 'vue-i18n'
|
|
42
43
|
|
|
43
44
|
const slots = defineSlots<{
|
|
44
45
|
default(): any
|
|
@@ -46,6 +47,8 @@ const slots = defineSlots<{
|
|
|
46
47
|
footer?(): any
|
|
47
48
|
}>()
|
|
48
49
|
|
|
50
|
+
const { t } = useI18n()
|
|
51
|
+
|
|
49
52
|
const sidebar = useSidebarStore()
|
|
50
53
|
const ui = useUiStore()
|
|
51
54
|
</script>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<NewVtsIcon :name="iconName" :size />
|
|
3
|
+
</template>
|
|
4
|
+
|
|
5
|
+
<script generic="TType extends ObjectIconType" lang="ts" setup>
|
|
6
|
+
import NewVtsIcon, { type IconSize } from '@core/components/icon/NewVtsIcon.vue'
|
|
7
|
+
import type { ObjectIconName } from '@core/icons'
|
|
8
|
+
import { computed } from 'vue'
|
|
9
|
+
|
|
10
|
+
export type ObjectIconType = ObjectIconName extends `object:${infer TType}:${string}` ? TType : never
|
|
11
|
+
|
|
12
|
+
export type ObjectIconState<TType extends ObjectIconType> =
|
|
13
|
+
Extract<ObjectIconName, `object:${TType}:${string}`> extends `object:${TType}:${infer TState}` ? TState : never
|
|
14
|
+
|
|
15
|
+
const { type, state } = defineProps<{
|
|
16
|
+
type: TType
|
|
17
|
+
state: ObjectIconState<TType>
|
|
18
|
+
size: IconSize
|
|
19
|
+
}>()
|
|
20
|
+
|
|
21
|
+
const iconName = computed(() => `object:${type}:${state}` as ObjectIconName)
|
|
22
|
+
</script>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<UiCard class="vts-quick-info-card">
|
|
3
|
-
<UiCardTitle>{{
|
|
3
|
+
<UiCardTitle>{{ t('quick-info') }}</UiCardTitle>
|
|
4
4
|
<VtsLoadingHero v-if="loading" type="card" />
|
|
5
5
|
<div v-else class="info-container">
|
|
6
6
|
<slot />
|
|
@@ -12,10 +12,13 @@
|
|
|
12
12
|
import VtsLoadingHero from '@core/components/state-hero/VtsLoadingHero.vue'
|
|
13
13
|
import UiCard from '@core/components/ui/card/UiCard.vue'
|
|
14
14
|
import UiCardTitle from '@core/components/ui/card-title/UiCardTitle.vue'
|
|
15
|
+
import { useI18n } from 'vue-i18n'
|
|
15
16
|
|
|
16
17
|
defineProps<{
|
|
17
18
|
loading: boolean
|
|
18
19
|
}>()
|
|
20
|
+
|
|
21
|
+
const { t } = useI18n()
|
|
19
22
|
</script>
|
|
20
23
|
|
|
21
24
|
<style lang="postcss" scoped>
|
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<UiDropdown
|
|
3
3
|
ref="elementRef"
|
|
4
|
-
:
|
|
4
|
+
:accent
|
|
5
|
+
:checkbox="isMultiple"
|
|
5
6
|
:disabled="option.properties.disabled"
|
|
6
7
|
:hover="option.flags.active"
|
|
7
8
|
:selected="option.flags.selected"
|
|
8
|
-
accent="normal"
|
|
9
9
|
>
|
|
10
10
|
<slot>{{ option.properties.label }}</slot>
|
|
11
11
|
</UiDropdown>
|
|
12
12
|
</template>
|
|
13
13
|
|
|
14
|
-
<script generic="TOption extends FormOption" lang="ts" setup>
|
|
15
|
-
import UiDropdown from '@core/components/ui/dropdown/UiDropdown.vue'
|
|
16
|
-
import type
|
|
17
|
-
import {
|
|
14
|
+
<script generic="TOption extends FormOption<{ accent?: DropdownAccent }>" lang="ts" setup>
|
|
15
|
+
import UiDropdown, { type DropdownAccent } from '@core/components/ui/dropdown/UiDropdown.vue'
|
|
16
|
+
import { type FormOption, IK_FORM_SELECT_CONTROLLER, useFormOptionController } from '@core/packages/form-select'
|
|
17
|
+
import { computed, inject } from 'vue'
|
|
18
18
|
|
|
19
19
|
const { option } = defineProps<{
|
|
20
20
|
option: TOption
|
|
21
21
|
}>()
|
|
22
22
|
|
|
23
|
+
const accent = computed(() => option.properties.accent ?? 'normal')
|
|
24
|
+
|
|
23
25
|
const { elementRef } = useFormOptionController(() => option)
|
|
26
|
+
|
|
27
|
+
const { isMultiple } = inject(IK_FORM_SELECT_CONTROLLER)!
|
|
24
28
|
</script>
|