api-client/components/smart/FontSizePicker.vue

55 lines
1.4 KiB
Vue
Raw Normal View History

2021-08-03 16:05:01 +00:00
<template>
<span class="inline-flex">
<span class="select-wrapper">
2021-08-06 16:10:26 +00:00
<tippy ref="fontSize" interactive trigger="click" theme="popover" arrow>
2021-08-03 16:05:01 +00:00
<template #trigger>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="$t('settings.change_font_size')"
class="pr-8"
2021-08-04 05:50:23 +00:00
icon="format_size"
2021-08-03 16:05:01 +00:00
outline
:label="`${fontSizes.find(({ code }) => code == active.code).name}`"
/>
</template>
<SmartItem
v-for="(size, index) in fontSizes"
:key="`size-${index}`"
:label="size.name"
2021-08-04 05:50:23 +00:00
:info-icon="size.code === active.code ? 'done' : ''"
2021-08-09 12:25:30 +00:00
:active-info-icon="size.code === active.code"
2021-08-03 16:05:01 +00:00
@click.native="
setActiveFont(size)
$refs.fontSize.tippy().hide()
"
/>
</tippy>
</span>
</span>
</template>
<script lang="ts">
2021-08-12 08:14:10 +00:00
import { defineComponent } from "@nuxtjs/composition-api"
2021-08-03 16:05:01 +00:00
import {
HoppFontSizes,
HoppFontSize,
applySetting,
2021-08-12 08:14:10 +00:00
useSetting,
2021-08-03 16:05:01 +00:00
} from "~/newstore/settings"
2021-08-12 08:14:10 +00:00
export default defineComponent({
setup() {
2021-08-03 16:05:01 +00:00
return {
fontSizes: HoppFontSizes,
2021-08-12 08:14:10 +00:00
active: useSetting("FONT_SIZE"),
2021-08-03 16:05:01 +00:00
}
},
methods: {
setActiveFont(size: HoppFontSize) {
document.documentElement.setAttribute("data-font-size", size.code)
applySetting("FONT_SIZE", size)
},
},
})
</script>