api-client/components/smart/ColorModePicker.vue

69 lines
1.5 KiB
Vue
Raw Normal View History

2020-09-24 02:52:54 +00:00
<template>
<div class="flex">
<ButtonSecondary
v-for="(color, index) of colors"
:key="`color-${index}`"
v-tippy="{ theme: 'tooltip' }"
2021-08-16 16:32:18 +00:00
:title="$t(getColorModeName(color))"
:class="{
'bg-primaryLight !text-accent hover:text-accent': color === active,
}"
class="rounded"
:icon="getIcon(color)"
2021-07-13 23:49:08 +00:00
@click.native="setBGMode(color)"
/>
2020-12-11 16:54:34 +00:00
</div>
2020-09-24 02:52:54 +00:00
</template>
2021-07-06 12:20:37 +00:00
<script lang="ts">
2021-08-12 08:14:10 +00:00
import { defineComponent } from "@nuxtjs/composition-api"
2021-07-06 12:20:37 +00:00
import {
applySetting,
HoppBgColor,
HoppBgColors,
2021-08-12 08:14:10 +00:00
useSetting,
2021-07-06 12:20:37 +00:00
} from "~/newstore/settings"
2021-08-12 08:14:10 +00:00
export default defineComponent({
setup() {
2020-09-24 02:52:54 +00:00
return {
2021-07-06 12:20:37 +00:00
colors: HoppBgColors,
2021-08-12 08:14:10 +00:00
active: useSetting("BG_COLOR"),
2020-09-24 02:52:54 +00:00
}
},
methods: {
2021-07-06 12:20:37 +00:00
setBGMode(color: HoppBgColor) {
applySetting("BG_COLOR", color)
},
getIcon(color: HoppBgColor) {
2020-09-24 02:52:54 +00:00
switch (color) {
case "system":
2021-08-15 09:48:04 +00:00
return "devices"
2020-09-24 02:52:54 +00:00
case "light":
2021-08-15 09:48:04 +00:00
return "light_mode"
2020-09-24 02:52:54 +00:00
case "dark":
return "nights_stay"
case "black":
2021-08-15 09:48:04 +00:00
return "dark_mode"
2020-09-24 02:52:54 +00:00
default:
2021-08-15 09:48:04 +00:00
return "devices"
2020-09-24 02:52:54 +00:00
}
},
2021-08-16 16:32:18 +00:00
getColorModeName(colorMode: string) {
switch (colorMode) {
case "system":
return "settings.system_mode"
case "light":
return "settings.light_mode"
case "dark":
return "settings.dark_mode"
case "black":
return "settings.black_mode"
default:
return "settings.system_mode"
}
},
2020-09-24 02:52:54 +00:00
},
2021-07-06 12:20:37 +00:00
})
2020-09-24 02:52:54 +00:00
</script>