refactor(client): refactor settings/deck to use Composition API (#8598)

This commit is contained in:
Andreas Nedbal 2022-05-05 15:51:29 +02:00 committed by GitHub
parent a6c138600f
commit e5a8773bfe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 44 additions and 62 deletions

View File

@ -1,36 +1,36 @@
<template> <template>
<div class="_formRoot"> <div class="_formRoot">
<FormGroup> <FormGroup>
<template #label>{{ $ts.defaultNavigationBehaviour }}</template> <template #label>{{ i18n.ts.defaultNavigationBehaviour }}</template>
<FormSwitch v-model="navWindow">{{ $ts.openInWindow }}</FormSwitch> <FormSwitch v-model="navWindow">{{ i18n.ts.openInWindow }}</FormSwitch>
</FormGroup> </FormGroup>
<FormSwitch v-model="alwaysShowMainColumn" class="_formBlock">{{ $ts._deck.alwaysShowMainColumn }}</FormSwitch> <FormSwitch v-model="alwaysShowMainColumn" class="_formBlock">{{ i18n.ts._deck.alwaysShowMainColumn }}</FormSwitch>
<FormRadios v-model="columnAlign" class="_formBlock"> <FormRadios v-model="columnAlign" class="_formBlock">
<template #label>{{ $ts._deck.columnAlign }}</template> <template #label>{{ i18n.ts._deck.columnAlign }}</template>
<option value="left">{{ $ts.left }}</option> <option value="left">{{ i18n.ts.left }}</option>
<option value="center">{{ $ts.center }}</option> <option value="center">{{ i18n.ts.center }}</option>
</FormRadios> </FormRadios>
<FormRadios v-model="columnHeaderHeight" class="_formBlock"> <FormRadios v-model="columnHeaderHeight" class="_formBlock">
<template #label>{{ $ts._deck.columnHeaderHeight }}</template> <template #label>{{ i18n.ts._deck.columnHeaderHeight }}</template>
<option :value="42">{{ $ts.narrow }}</option> <option :value="42">{{ i18n.ts.narrow }}</option>
<option :value="45">{{ $ts.medium }}</option> <option :value="45">{{ i18n.ts.medium }}</option>
<option :value="48">{{ $ts.wide }}</option> <option :value="48">{{ i18n.ts.wide }}</option>
</FormRadios> </FormRadios>
<FormInput v-model="columnMargin" type="number" class="_formBlock"> <FormInput v-model="columnMargin" type="number" class="_formBlock">
<template #label>{{ $ts._deck.columnMargin }}</template> <template #label>{{ i18n.ts._deck.columnMargin }}</template>
<template #suffix>px</template> <template #suffix>px</template>
</FormInput> </FormInput>
<FormLink class="_formBlock" @click="setProfile">{{ $ts._deck.profile }}<template #suffix>{{ profile }}</template></FormLink> <FormLink class="_formBlock" @click="setProfile">{{ i18n.ts._deck.profile }}<template #suffix>{{ profile }}</template></FormLink>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts" setup>
import { defineComponent } from 'vue'; import { computed, defineExpose, watch } from 'vue';
import FormSwitch from '@/components/form/switch.vue'; import FormSwitch from '@/components/form/switch.vue';
import FormLink from '@/components/form/link.vue'; import FormLink from '@/components/form/link.vue';
import FormRadios from '@/components/form/radios.vue'; import FormRadios from '@/components/form/radios.vue';
@ -40,59 +40,41 @@ import { deckStore } from '@/ui/deck/deck-store';
import * as os from '@/os'; import * as os from '@/os';
import { unisonReload } from '@/scripts/unison-reload'; import { unisonReload } from '@/scripts/unison-reload';
import * as symbols from '@/symbols'; import * as symbols from '@/symbols';
import { i18n } from '@/i18n';
export default defineComponent({ const navWindow = computed(deckStore.makeGetterSetter('navWindow'));
components: { const alwaysShowMainColumn = computed(deckStore.makeGetterSetter('alwaysShowMainColumn'));
FormSwitch, const columnAlign = computed(deckStore.makeGetterSetter('columnAlign'));
FormLink, const columnMargin = computed(deckStore.makeGetterSetter('columnMargin'));
FormInput, const columnHeaderHeight = computed(deckStore.makeGetterSetter('columnHeaderHeight'));
FormRadios, const profile = computed(deckStore.makeGetterSetter('profile'));
FormGroup,
},
emits: ['info'], watch(navWindow, async () => {
const { canceled } = await os.confirm({
type: 'info',
text: i18n.ts.reloadToApplySetting,
});
if (canceled) return;
data() { unisonReload();
return { });
[symbols.PAGE_INFO]: {
title: this.$ts.deck,
icon: 'fas fa-columns',
bg: 'var(--bg)',
},
}
},
computed: { async function setProfile() {
navWindow: deckStore.makeGetterSetter('navWindow'), const { canceled, result: name } = await os.inputText({
alwaysShowMainColumn: deckStore.makeGetterSetter('alwaysShowMainColumn'), title: i18n.ts._deck.profile,
columnAlign: deckStore.makeGetterSetter('columnAlign'), allowEmpty: false
columnMargin: deckStore.makeGetterSetter('columnMargin'), });
columnHeaderHeight: deckStore.makeGetterSetter('columnHeaderHeight'), if (canceled) return;
profile: deckStore.makeGetterSetter('profile'),
},
watch: { profile.value = name;
async navWindow() { unisonReload();
const { canceled } = await os.confirm({ }
type: 'info',
text: this.$ts.reloadToApplySetting,
});
if (canceled) return;
unisonReload(); defineExpose({
} [symbols.PAGE_INFO]: {
}, title: i18n.ts.deck,
icon: 'fas fa-columns',
methods: { bg: 'var(--bg)',
async setProfile() {
const { canceled, result: name } = await os.inputText({
title: this.$ts._deck.profile,
allowEmpty: false
});
if (canceled) return;
this.profile = name;
unisonReload();
}
} }
}); });
</script> </script>