mirror of
https://github.com/versia-pub/frontend.git
synced 2025-12-06 16:38:20 +01:00
refactor: ♻️ Simplify settings page rendering code
This commit is contained in:
parent
50d5af7e4a
commit
733a51ab9a
18
components/settings/page.vue
Normal file
18
components/settings/page.vue
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
<template>
|
||||
<Renderer :id="id" v-for="id of settingsIds" :key="id" />
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import {
|
||||
type SettingIds,
|
||||
type SettingPages,
|
||||
getSettingsForPage,
|
||||
} from "~/settings";
|
||||
import Renderer from "./renderer.vue";
|
||||
|
||||
const props = defineProps<{
|
||||
page: SettingPages;
|
||||
}>();
|
||||
|
||||
const settingsIds = Object.keys(getSettingsForPage(props.page)) as SettingIds[];
|
||||
</script>
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
<Tabs.Root v-model="tab" class="bg-dark-700 h-full overflow-auto pb-20">
|
||||
<Tabs.List class="flex flex-row p-4 gap-4 bg-dark-800 relative ring-1 ring-white/5 overflow-x-auto">
|
||||
<Tabs.Trigger :value="page"
|
||||
v-for="page of [SettingPages.Account, SettingPages.Emojis, SettingPages.Behaviour, SettingPages.Appearance]"
|
||||
v-for="page of SettingPages"
|
||||
:as-child="true">
|
||||
<ButtonBase class="capitalize hover:bg-white/5">
|
||||
{{ page }}
|
||||
|
|
|
|||
|
|
@ -1,20 +1,11 @@
|
|||
<template>
|
||||
<SettingsSidebar>
|
||||
<template #behaviour>
|
||||
<Renderer :id="id" v-for="id of (Object.keys(getSettingsForPage(
|
||||
SettingPages.Behaviour,
|
||||
)) as SettingIds[])" :key="id" />
|
||||
<SettingPage :page="SettingPages.Behaviour" />
|
||||
</template>
|
||||
<template #appearance>
|
||||
<Renderer :id="id" v-for="id of (Object.keys(getSettingsForPage(
|
||||
SettingPages.Appearance,
|
||||
)) as SettingIds[])" :key="id" />
|
||||
<SettingPage :page="SettingPages.Appearance" />
|
||||
</template>
|
||||
<!-- <template #advanced>
|
||||
<Renderer :id="id" v-for="id of (Object.keys(getSettingsForPage(
|
||||
SettingPages.Advanced,
|
||||
)) as SettingIds[])" :key="id" />
|
||||
</template> -->
|
||||
<template #account>
|
||||
<ProfileEditor />
|
||||
</template>
|
||||
|
|
@ -26,10 +17,10 @@
|
|||
|
||||
<script setup lang="ts">
|
||||
import EmojiEditor from "~/components/settings/emojis/emojis.vue";
|
||||
import SettingPage from "~/components/settings/page.vue";
|
||||
import ProfileEditor from "~/components/settings/profile-editor.vue";
|
||||
import Renderer from "~/components/settings/renderer.vue";
|
||||
import SettingsSidebar from "~/components/sidebars/settings-sidebar.vue";
|
||||
import { SettingIds, SettingPages, getSettingsForPage } from "~/settings";
|
||||
import { SettingPages } from "~/settings";
|
||||
|
||||
definePageMeta({
|
||||
layout: "app",
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ const art = `
|
|||
* With ❤️ from us:
|
||||
* - @jessew@social.lysand.org
|
||||
* - @aprl@social.lysand.org
|
||||
* - @graphite@social.lysand.org
|
||||
`;
|
||||
|
||||
export default defineNitroPlugin((nitroApp) => {
|
||||
|
|
|
|||
|
|
@ -62,7 +62,6 @@ export enum SettingPages {
|
|||
Account = "account",
|
||||
Emojis = "emojis",
|
||||
Behaviour = "behaviour",
|
||||
Advanced = "advanced",
|
||||
Appearance = "appearance",
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue