Feat(settings): add renderer for settings configuration #142

Merged
jakob.scheid merged 88 commits from feature/settings-renderer into main 2026-07-28 20:14:50 +02:00
Showing only changes of commit 70ad0420bb - Show all commits
@@ -17,7 +17,7 @@ limitations under the License.
<script setup> <script setup>
import Icon from '@/features/icons/components/Icon.vue'; import Icon from '@/features/icons/components/Icon.vue';
import { useSettingsStore } from '../stores/settingsStore'; import { useSettingsStore } from '../stores/settingsStore';
import { computed, ref, watch } from 'vue'; import { computed, ref, useId, watch } from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
const { t } = useI18n(); const { t } = useI18n();
1
@@ -59,14 +59,16 @@ const selected = ref(normalizeSelectedValue(store.get(props.path) ?? props.setti
watch(selected, (newValue) => { watch(selected, (newValue) => {
jakob.scheid marked this conversation as resolved Outdated
Outdated
Review

The oldValue parameter is not necessary.

The `oldValue` parameter is not necessary.
store.set(props.path, newValue); store.set(props.path, newValue);
}); });
const labelId = useId();
</script> </script>
<template> <template>
jakob.scheid marked this conversation as resolved Outdated
Outdated
Review

Please add a label relationship between div.label and ul.options-list.

Please add a label relationship between `div.label` and `ul.options-list`.
<div> <div>
<div class="label"> <div class="label" :id="labelId">
{{ t(props.setting.i18n) }} {{ t(props.setting.i18n) }}
</div> </div>
<ul class="options-list"> <ul class="options-list" :aria-labelledby="labelId">
jakob.scheid marked this conversation as resolved Outdated
Outdated
Review

Please add a title and aria-label attributes.

Please add a `title` and `aria-label` attributes.
<li v-for="option in props.setting.options" :key="option.name"> <li v-for="option in props.setting.options" :key="option.name">
<label class="settings-button"> <label class="settings-button">
<input <input