@xen-orchestra/web-core 0.16.0 → 0.18.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/console/VtsRemoteConsole.vue +1 -1
- package/lib/components/data-table/VtsDataTable.vue +13 -14
- package/lib/components/input-wrapper/VtsInputWrapper.vue +94 -0
- package/lib/components/{charts/LinearChart.md → linear-chart/VtsLinearChart.md} +3 -3
- package/lib/components/{charts/LinearChart.vue → linear-chart/VtsLinearChart.vue} +12 -11
- package/lib/components/menu/MenuList.vue +1 -0
- package/lib/components/quick-info-card/VtsQuickInfoCard.vue +29 -0
- package/lib/components/quick-info-column/VtsQuickInfoColumn.vue +13 -0
- package/lib/components/quick-info-row/VtsQuickInfoRow.vue +40 -0
- package/lib/components/state-hero/VtsLoadingHero.vue +1 -3
- package/lib/components/ui/card/UiCard.vue +12 -0
- package/lib/components/ui/dropdown/UiDropdown.vue +214 -0
- package/lib/components/ui/dropdown/UiDropdownList.vue +16 -0
- package/lib/components/ui/label/UiLabel.vue +3 -1
- package/lib/components/ui/progress-bar/UiProgressBar.vue +108 -0
- package/lib/components/ui/radio-button/UiRadioButton.vue +1 -1
- package/lib/components/ui/table-pagination/UiTablePagination.vue +23 -57
- package/lib/components/ui/toaster/UiToaster.vue +6 -2
- package/lib/composables/chart-theme.composable.ts +2 -2
- package/lib/composables/mapper.composable.md +74 -0
- package/lib/composables/mapper.composable.ts +18 -0
- package/lib/composables/pagination.composable.md +32 -0
- package/lib/composables/pagination.composable.ts +91 -0
- package/lib/composables/ranked.composable.md +118 -0
- package/lib/composables/ranked.composable.ts +37 -0
- package/lib/composables/relative-time.composable.md +18 -0
- package/lib/composables/relative-time.composable.ts +66 -0
- package/lib/i18n.ts +12 -0
- package/lib/locales/cs.json +49 -17
- package/lib/locales/de.json +233 -24
- package/lib/locales/en.json +69 -3
- package/lib/locales/es.json +42 -10
- package/lib/locales/fa.json +208 -6
- package/lib/locales/fr.json +68 -2
- package/lib/locales/it.json +178 -0
- package/lib/locales/ru.json +91 -0
- package/lib/locales/sv.json +25 -0
- package/lib/locales/uk.json +1 -0
- package/lib/utils/if-else.utils.ts +1 -1
- package/lib/utils/injection-keys.util.ts +3 -2
- package/lib/utils/time.util.ts +18 -0
- package/package.json +22 -22
- package/lib/components/dropdown/DropdownItem.vue +0 -163
- package/lib/components/dropdown/DropdownList.vue +0 -31
package/lib/locales/sv.json
CHANGED
|
@@ -44,6 +44,9 @@
|
|
|
44
44
|
"backups.vms-protection.protected": "I minst ett jobb och skyddad",
|
|
45
45
|
"backups.vms-protection.tooltip": "En VM är skyddad om den är med i ett säkerhetskopieringsjobb, med ett aktivt schema och den senaste körningen lyckades",
|
|
46
46
|
"backups.vms-protection.unprotected": "Med i minst 1 jobb men oskyddad",
|
|
47
|
+
"bond": "Bindning",
|
|
48
|
+
"bond-devices": "Bindningsenheter",
|
|
49
|
+
"bond-status": "Bindnings-status",
|
|
47
50
|
"bytes.gi": "GiB",
|
|
48
51
|
"bytes.ki": "KiB",
|
|
49
52
|
"bytes.mi": "MiB",
|
|
@@ -66,6 +69,7 @@
|
|
|
66
69
|
"console-unavailable": "Konsolen är inte tillgänglig",
|
|
67
70
|
"copy": "Kopiera",
|
|
68
71
|
"copy-info-json": "Kopiera informationen till JSON",
|
|
72
|
+
"core.character-limit": "{count}/{max} tecken | {count}/{max} tecken",
|
|
69
73
|
"core.close": "Stäng",
|
|
70
74
|
"core.copied": "Kopierad",
|
|
71
75
|
"core.copy-id": "Kopiera ID",
|
|
@@ -91,6 +95,8 @@
|
|
|
91
95
|
"core.sidebar.unlock": "Lås upp sidofält",
|
|
92
96
|
"core.sort.ascending": "Sortera stigande",
|
|
93
97
|
"core.sort.descending": "Sotera fallande",
|
|
98
|
+
"core.textarea.exceeds-max-characters": "Fältet får enbart vara {max} tecken eller färre.",
|
|
99
|
+
"cores-with-sockets": "",
|
|
94
100
|
"cpu-provisioning": "CPU-provisionering",
|
|
95
101
|
"cpu-provisioning-warning": "Antalet vCPU:er som allokerats överskrider antalet fysiska CPU:er. Systemets prestanda kan påverkas",
|
|
96
102
|
"cpu-usage": "CPU-nyttjande",
|
|
@@ -163,10 +169,12 @@
|
|
|
163
169
|
"gateway": "Gateway",
|
|
164
170
|
"go-back": "Gå tillbaka",
|
|
165
171
|
"gzip": "gzip",
|
|
172
|
+
"hardware": "",
|
|
166
173
|
"here": "Här",
|
|
167
174
|
"host": "Host",
|
|
168
175
|
"host-description": "Host-beskrivning",
|
|
169
176
|
"host-internal-networks": "Hostinternanätverk",
|
|
177
|
+
"host-unknown": "Host okänd",
|
|
170
178
|
"host.active": "Aktiv",
|
|
171
179
|
"host.inactive": "Inaktiv",
|
|
172
180
|
"hosts": "Hosts",
|
|
@@ -180,6 +188,7 @@
|
|
|
180
188
|
"invalid-field": "Felaktigt fält",
|
|
181
189
|
"ip-addresses": "IP-adresser",
|
|
182
190
|
"ip-mode": "IP-läge",
|
|
191
|
+
"is-primary-host": "",
|
|
183
192
|
"job.vm-copy.bad-power-state": "VMen måste vara stoppad",
|
|
184
193
|
"job.vm-copy.in-progress": "Kopiering pågår…",
|
|
185
194
|
"job.vm-copy.missing-vms": "Ingen VM att kopiera",
|
|
@@ -229,6 +238,7 @@
|
|
|
229
238
|
"language": "Språk",
|
|
230
239
|
"last-week": "Föregående vecka",
|
|
231
240
|
"learn-more": "Läs mer",
|
|
241
|
+
"load-average": "",
|
|
232
242
|
"load-now": "Ladda nu",
|
|
233
243
|
"loading-hosts": "Ladda hostar…",
|
|
234
244
|
"loading-in-progress": "Laddning pågår…",
|
|
@@ -237,9 +247,11 @@
|
|
|
237
247
|
"log-out": "Logga ut",
|
|
238
248
|
"login": "Inloggning",
|
|
239
249
|
"login-only-on-master": "Det går endast att logga in mot huvudhosten",
|
|
250
|
+
"mac-address": "MAC-adress",
|
|
240
251
|
"mac-addresses": "MAC-adresser",
|
|
241
252
|
"management": "Hantering",
|
|
242
253
|
"master": "Primärhost",
|
|
254
|
+
"memory-usage": "",
|
|
243
255
|
"migrate": "Migrera",
|
|
244
256
|
"migrate-n-vms": "Migrera 1 VM | Migrera {n} VMar",
|
|
245
257
|
"missing-patches": "Saknar uppdateringar",
|
|
@@ -256,6 +268,7 @@
|
|
|
256
268
|
"network": "Nätverk",
|
|
257
269
|
"network-block-device": "Nätverksblockeringsenhet",
|
|
258
270
|
"network-download": "Ladda ned",
|
|
271
|
+
"network-information": "Nätverksinformation",
|
|
259
272
|
"network-throughput": "Nätverksflöde",
|
|
260
273
|
"network-upload": "Ladda upp",
|
|
261
274
|
"networks": "Nätverk",
|
|
@@ -289,6 +302,9 @@
|
|
|
289
302
|
"password-invalid": "Lösenord felaktigt",
|
|
290
303
|
"patches": "Patchar",
|
|
291
304
|
"pause": "Pausa",
|
|
305
|
+
"physical-interface-status": "Status för fysiska gränssnitt",
|
|
306
|
+
"pif": "PIF",
|
|
307
|
+
"pif-status": "PIF-status",
|
|
292
308
|
"pifs": "PIFs",
|
|
293
309
|
"pifs-status": "PIF status",
|
|
294
310
|
"please-confirm": "Vänligen bekräfta",
|
|
@@ -305,7 +321,9 @@
|
|
|
305
321
|
"power-on-vm-for-console": "Starta din VM för att ansluta till konsolen",
|
|
306
322
|
"power-state": "Strömläge",
|
|
307
323
|
"professional-support": "Professionell support",
|
|
324
|
+
"properties": "Egenskaper",
|
|
308
325
|
"property": "Egenskap",
|
|
326
|
+
"ram": "",
|
|
309
327
|
"ram-usage": "RAM-användning",
|
|
310
328
|
"reboot": "Starta om",
|
|
311
329
|
"receive": "Ta emot",
|
|
@@ -350,6 +368,7 @@
|
|
|
350
368
|
"stacked-ram-usage": "Staplad RAM-användning",
|
|
351
369
|
"start": "Starta",
|
|
352
370
|
"start-on-host": "Starta på specifik host",
|
|
371
|
+
"started": "",
|
|
353
372
|
"static": "Statisk",
|
|
354
373
|
"static-ip": "Statisk IP",
|
|
355
374
|
"stats": "Statistik",
|
|
@@ -362,6 +381,7 @@
|
|
|
362
381
|
"switch-theme": "Byt tema",
|
|
363
382
|
"system": "System",
|
|
364
383
|
"table-actions": "Tabellåtgärder",
|
|
384
|
+
"tags": "Taggar",
|
|
365
385
|
"task.estimated-end": "Estimerad sluttid",
|
|
366
386
|
"task.progress": "Status",
|
|
367
387
|
"task.started": "Startad",
|
|
@@ -380,9 +400,11 @@
|
|
|
380
400
|
"top-#": "Topp {n}",
|
|
381
401
|
"total": "Totalt",
|
|
382
402
|
"total-cpus": "Totalt antal CPUer",
|
|
403
|
+
"total-free": "",
|
|
383
404
|
"total-free:": "Totalt ledigt:",
|
|
384
405
|
"total-memory": "Totalt minne",
|
|
385
406
|
"total-storage-repository": "Totalt lagringsutrymme",
|
|
407
|
+
"total-used": "",
|
|
386
408
|
"total-used:": "Totalt använt:",
|
|
387
409
|
"unknown": "Okänt",
|
|
388
410
|
"unlocked": "Upplåst",
|
|
@@ -390,6 +412,7 @@
|
|
|
390
412
|
"unreachable-hosts-reload-page": "Färdigt, ladda om sidan",
|
|
391
413
|
"up-to-date": "Uppdaterad",
|
|
392
414
|
"used": "Använt",
|
|
415
|
+
"uuid": "UUID",
|
|
393
416
|
"vcpus": "vCPUer",
|
|
394
417
|
"vcpus-used": "vCPUer använt",
|
|
395
418
|
"version": "Version",
|
|
@@ -406,7 +429,9 @@
|
|
|
406
429
|
"vms-status.running": "Igång",
|
|
407
430
|
"vms-status.unknown": "Okänt",
|
|
408
431
|
"vms-status.unknown.tooltip": "För vilken XO har förlorat kontakten med poolen",
|
|
432
|
+
"xo-backups": "XO-backuper",
|
|
409
433
|
"xo-lite-under-construction": "XOLite är under uppbyggnad",
|
|
434
|
+
"xo-replications": "XO-replikeringar",
|
|
410
435
|
"xoa-admin-account": "XOA admin-konto",
|
|
411
436
|
"xoa-deploy": "XOA driftsättning",
|
|
412
437
|
"xoa-deploy-failed": "Ledsen, driftsättning misslyckades!",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{}
|
|
@@ -2,7 +2,7 @@ import type { MaybeArray, VoidFunction } from '@core/types/utility.type'
|
|
|
2
2
|
import { toArray } from '@core/utils/to-array.utils'
|
|
3
3
|
import { watch, type WatchOptions, type WatchSource } from 'vue'
|
|
4
4
|
|
|
5
|
-
export interface IfElseOptions extends Pick<WatchOptions, 'immediate'> {}
|
|
5
|
+
export interface IfElseOptions extends Pick<WatchOptions, 'immediate' | 'flush'> {}
|
|
6
6
|
|
|
7
7
|
export function ifElse(
|
|
8
8
|
source: WatchSource<boolean>,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { InputWrapperController } from '@core/components/input-wrapper/VtsInputWrapper.vue'
|
|
1
2
|
import type { ValueFormatter } from '@core/types/chart'
|
|
2
3
|
import type { ComputedRef, InjectionKey, Ref } from 'vue'
|
|
3
4
|
|
|
@@ -11,8 +12,6 @@ export const IK_TREE_ITEM_EXPANDED = Symbol('IK_TREE_ITEM_EXPANDED') as Injectio
|
|
|
11
12
|
|
|
12
13
|
export const IK_TREE_LIST_DEPTH = Symbol('IK_TREE_LIST_DEPTH') as InjectionKey<number>
|
|
13
14
|
|
|
14
|
-
export const IK_DROPDOWN_CHECKBOX = Symbol('IK_DROPDOWN_CHECKBOX') as InjectionKey<ComputedRef<boolean>>
|
|
15
|
-
|
|
16
15
|
export const IK_MENU_HORIZONTAL = Symbol('IK_MENU_HORIZONTAL') as InjectionKey<ComputedRef<boolean>>
|
|
17
16
|
|
|
18
17
|
export const IK_CLOSE_MENU = Symbol('IK_CLOSE_MENU') as InjectionKey<() => void>
|
|
@@ -20,3 +19,5 @@ export const IK_CLOSE_MENU = Symbol('IK_CLOSE_MENU') as InjectionKey<() => void>
|
|
|
20
19
|
export const IK_MENU_TELEPORTED = Symbol('IK_MENU_TELEPORTED') as InjectionKey<boolean>
|
|
21
20
|
|
|
22
21
|
export const IK_DISABLED = Symbol('IK_DISABLED') as InjectionKey<ComputedRef<boolean>>
|
|
22
|
+
|
|
23
|
+
export const IK_INPUT_WRAPPER_CONTROLLER = Symbol('IK_INPUT_WRAPPER_CONTROLLER') as InjectionKey<InputWrapperController>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { utcParse } from 'd3-time-format'
|
|
2
|
+
|
|
3
|
+
export function parseDateTime(dateTime: Date | string | number): number {
|
|
4
|
+
if (typeof dateTime === 'number') {
|
|
5
|
+
return dateTime
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
if (dateTime instanceof Date) {
|
|
9
|
+
return dateTime.getTime()
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
dateTime = dateTime.replace(/(-|\.\d{3})/g, '') // Allow toISOString() date-time format
|
|
13
|
+
const date = utcParse('%Y%m%dT%H:%M:%SZ')(dateTime)
|
|
14
|
+
if (date === null) {
|
|
15
|
+
throw new RangeError(`unable to parse XAPI datetime ${JSON.stringify(dateTime)}`)
|
|
16
|
+
}
|
|
17
|
+
return date.getTime()
|
|
18
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xen-orchestra/web-core",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.18.0",
|
|
5
5
|
"private": false,
|
|
6
6
|
"exports": {
|
|
7
7
|
"./*": {
|
|
@@ -10,19 +10,19 @@
|
|
|
10
10
|
}
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@floating-ui/vue": "^1.1.
|
|
14
|
-
"@fontsource/poppins": "^5.
|
|
15
|
-
"@fortawesome/fontawesome-common-types": "^6.
|
|
16
|
-
"@fortawesome/free-regular-svg-icons": "^6.
|
|
17
|
-
"@fortawesome/free-solid-svg-icons": "^6.
|
|
18
|
-
"@fortawesome/vue-fontawesome": "^3.0.
|
|
19
|
-
"@novnc/novnc": "
|
|
13
|
+
"@floating-ui/vue": "^1.1.6",
|
|
14
|
+
"@fontsource/poppins": "^5.2.5",
|
|
15
|
+
"@fortawesome/fontawesome-common-types": "^6.7.2",
|
|
16
|
+
"@fortawesome/free-regular-svg-icons": "^6.7.2",
|
|
17
|
+
"@fortawesome/free-solid-svg-icons": "^6.7.2",
|
|
18
|
+
"@fortawesome/vue-fontawesome": "^3.0.8",
|
|
19
|
+
"@novnc/novnc": "~1.5.0",
|
|
20
20
|
"@types/d3-time-format": "^4.0.3",
|
|
21
|
-
"@vueuse/core": "^
|
|
22
|
-
"@vueuse/math": "^
|
|
23
|
-
"@vueuse/shared": "^
|
|
21
|
+
"@vueuse/core": "^13.0.0",
|
|
22
|
+
"@vueuse/math": "^13.0.0",
|
|
23
|
+
"@vueuse/shared": "^13.0.0",
|
|
24
24
|
"d3-time-format": "^4.1.0",
|
|
25
|
-
"echarts": "^5.
|
|
25
|
+
"echarts": "^5.6.0",
|
|
26
26
|
"human-format": "^1.2.1",
|
|
27
27
|
"iterable-backoff": "^0.1.0",
|
|
28
28
|
"lodash-es": "^4.17.21",
|
|
@@ -30,19 +30,19 @@
|
|
|
30
30
|
"vue-echarts": "^6.6.8"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"pinia": "^
|
|
34
|
-
"vue": "~3.5.
|
|
35
|
-
"vue-i18n": "^
|
|
36
|
-
"vue-router": "^4.
|
|
33
|
+
"pinia": "^3.0.1",
|
|
34
|
+
"vue": "~3.5.13",
|
|
35
|
+
"vue-i18n": "^11.1.2",
|
|
36
|
+
"vue-router": "^4.5.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/lodash-es": "^4.17.12",
|
|
40
|
-
"@types/novnc__novnc": "
|
|
41
|
-
"@vue/tsconfig": "^0.
|
|
42
|
-
"pinia": "^
|
|
43
|
-
"vue": "~3.5.
|
|
44
|
-
"vue-i18n": "^
|
|
45
|
-
"vue-router": "^4.
|
|
40
|
+
"@types/novnc__novnc": "~1.5.0",
|
|
41
|
+
"@vue/tsconfig": "^0.7.0",
|
|
42
|
+
"pinia": "^3.0.1",
|
|
43
|
+
"vue": "~3.5.13",
|
|
44
|
+
"vue-i18n": "^11.1.2",
|
|
45
|
+
"vue-router": "^4.5.0"
|
|
46
46
|
},
|
|
47
47
|
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/web-core",
|
|
48
48
|
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div v-tooltip="{ selector: '.label' }" :class="[color, { disabled, selected }]" class="dropdown-item">
|
|
3
|
-
<VtsIcon v-if="checkbox" :accent="color" :icon="selected ? faSquareCheck : faSquare" />
|
|
4
|
-
<slot name="icon">
|
|
5
|
-
<VtsIcon :icon accent="current" />
|
|
6
|
-
</slot>
|
|
7
|
-
<div class="label p2 medium text-ellipsis">
|
|
8
|
-
<slot />
|
|
9
|
-
</div>
|
|
10
|
-
<div v-if="info" class="info-text p3 italic">{{ info }}</div>
|
|
11
|
-
<VtsIcon v-if="arrow" :accent="disabled ? 'current' : 'brand'" :icon="faAngleRight" class="right-icon" />
|
|
12
|
-
</div>
|
|
13
|
-
</template>
|
|
14
|
-
|
|
15
|
-
<script lang="ts" setup>
|
|
16
|
-
import VtsIcon, { type IconAccent } from '@core/components/icon/VtsIcon.vue'
|
|
17
|
-
import { vTooltip } from '@core/directives/tooltip.directive'
|
|
18
|
-
import { IK_DROPDOWN_CHECKBOX } from '@core/utils/injection-keys.util'
|
|
19
|
-
import type { IconDefinition } from '@fortawesome/fontawesome-common-types'
|
|
20
|
-
import { faSquare } from '@fortawesome/free-regular-svg-icons'
|
|
21
|
-
import { faAngleRight, faSquareCheck } from '@fortawesome/free-solid-svg-icons'
|
|
22
|
-
import { computed, inject } from 'vue'
|
|
23
|
-
|
|
24
|
-
defineProps<{
|
|
25
|
-
arrow?: boolean
|
|
26
|
-
color: IconAccent
|
|
27
|
-
disabled?: boolean
|
|
28
|
-
icon?: IconDefinition
|
|
29
|
-
info?: string
|
|
30
|
-
selected?: boolean
|
|
31
|
-
}>()
|
|
32
|
-
|
|
33
|
-
const checkbox = inject(
|
|
34
|
-
IK_DROPDOWN_CHECKBOX,
|
|
35
|
-
computed(() => false)
|
|
36
|
-
)
|
|
37
|
-
</script>
|
|
38
|
-
|
|
39
|
-
<style lang="postcss" scoped>
|
|
40
|
-
/* COLOR VARIANTS */
|
|
41
|
-
.dropdown-item {
|
|
42
|
-
&.info {
|
|
43
|
-
--color: var(--color-neutral-txt-primary);
|
|
44
|
-
--background-color: var(--color-neutral-background-primary);
|
|
45
|
-
|
|
46
|
-
&:is(.active, .selected) {
|
|
47
|
-
--color: var(--color-neutral-txt-primary);
|
|
48
|
-
--background-color: var(--color-info-background-selected);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
&:is(:hover, .hover, :focus-visible) {
|
|
52
|
-
--color: var(--color-neutral-txt-primary);
|
|
53
|
-
--background-color: var(--color-info-background-hover);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
&:is(:active, .pressed) {
|
|
57
|
-
--color: var(--color-neutral-txt-primary);
|
|
58
|
-
--background-color: var(--color-info-background-active);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
&.disabled {
|
|
62
|
-
--color: var(--color-neutral-txt-secondary);
|
|
63
|
-
--background-color: var(--color-neutral-background-primary);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
&.success {
|
|
68
|
-
--color: var(--color-success-txt-base);
|
|
69
|
-
--background-color: var(--color-neutral-background-primary);
|
|
70
|
-
|
|
71
|
-
&:is(.active, .selected) {
|
|
72
|
-
--color: var(--color-success-txt-base);
|
|
73
|
-
--background-color: var(--color-success-background-selected);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
&:is(:hover, .hover, :focus-visible) {
|
|
77
|
-
--color: var(--color-success-txt-hover);
|
|
78
|
-
--background-color: var(--color-success-background-hover);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
&:is(:active, .pressed) {
|
|
82
|
-
--color: var(--color-success-txt-active);
|
|
83
|
-
--background-color: var(--color-success-background-active);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
&.disabled {
|
|
87
|
-
--color: var(--color-neutral-txt-secondary);
|
|
88
|
-
--background-color: var(--color-neutral-background-primary);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
&.warning {
|
|
93
|
-
--color: var(--color-warning-txt-base);
|
|
94
|
-
--background-color: var(--color-neutral-background-primary);
|
|
95
|
-
|
|
96
|
-
&:is(.active, .selected) {
|
|
97
|
-
--color: var(--color-warning-txt-base);
|
|
98
|
-
--background-color: var(--color-warning-background-selected);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
&:is(:hover, .hover, :focus-visible) {
|
|
102
|
-
--color: var(--color-warning-txt-hover);
|
|
103
|
-
--background-color: var(--color-warning-background-hover);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
&:is(:active, .pressed) {
|
|
107
|
-
--color: var(--color-warning-txt-active);
|
|
108
|
-
--background-color: var(--color-warning-background-active);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
&.disabled {
|
|
112
|
-
--color: var(--color-neutral-txt-secondary);
|
|
113
|
-
--background-color: var(--color-neutral-background-primary);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
&.danger {
|
|
118
|
-
--color: var(--color-danger-txt-base);
|
|
119
|
-
--background-color: var(--color-neutral-background-primary);
|
|
120
|
-
|
|
121
|
-
&:is(.active, .selected) {
|
|
122
|
-
--color: var(--color-danger-txt-base);
|
|
123
|
-
--background-color: var(--color-danger-background-selected);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
&:is(:hover, .hover, :focus-visible) {
|
|
127
|
-
--color: var(--color-danger-txt-hover);
|
|
128
|
-
--background-color: var(--color-danger-background-hover);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
&:is(:active, .pressed) {
|
|
132
|
-
--color: var(--color-danger-txt-active);
|
|
133
|
-
--background-color: var(--color-danger-background-active);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
&.disabled {
|
|
137
|
-
--color: var(--color-neutral-txt-secondary);
|
|
138
|
-
--background-color: var(--color-neutral-background-primary);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/* IMPLEMENTATION */
|
|
144
|
-
.dropdown-item {
|
|
145
|
-
display: flex;
|
|
146
|
-
align-items: center;
|
|
147
|
-
padding: 0.8rem;
|
|
148
|
-
gap: 0.8rem;
|
|
149
|
-
height: 3.7rem;
|
|
150
|
-
color: var(--color);
|
|
151
|
-
background: var(--background-color);
|
|
152
|
-
border-radius: 0.4rem;
|
|
153
|
-
margin: 0 0.4rem;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
.label {
|
|
157
|
-
margin-right: auto;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
.info-text {
|
|
161
|
-
color: var(--color-neutral-txt-secondary);
|
|
162
|
-
}
|
|
163
|
-
</style>
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="dropdown-list">
|
|
3
|
-
<slot />
|
|
4
|
-
</div>
|
|
5
|
-
</template>
|
|
6
|
-
|
|
7
|
-
<script lang="ts" setup>
|
|
8
|
-
import { IK_DROPDOWN_CHECKBOX } from '@core/utils/injection-keys.util'
|
|
9
|
-
import { computed, provide } from 'vue'
|
|
10
|
-
|
|
11
|
-
const props = defineProps<{
|
|
12
|
-
checkbox?: boolean
|
|
13
|
-
}>()
|
|
14
|
-
|
|
15
|
-
provide(
|
|
16
|
-
IK_DROPDOWN_CHECKBOX,
|
|
17
|
-
computed(() => props.checkbox)
|
|
18
|
-
)
|
|
19
|
-
</script>
|
|
20
|
-
|
|
21
|
-
<style lang="postcss" scoped>
|
|
22
|
-
.dropdown-list {
|
|
23
|
-
display: flex;
|
|
24
|
-
flex-direction: column;
|
|
25
|
-
padding: 0.4rem 0;
|
|
26
|
-
gap: 0.2rem;
|
|
27
|
-
border-radius: 0.4rem;
|
|
28
|
-
background: var(--color-neutral-background-primary);
|
|
29
|
-
box-shadow: var(--shadow-300);
|
|
30
|
-
}
|
|
31
|
-
</style>
|