generated from Seekra/repository-template
feature(settings)!: make settings configuration a JavaScript module
The settings configuration is now a JavaScript module because dynamic configuration is only possible in this way and dynamic settings configuration is needed for the language as a setting.
This commit is contained in:
@@ -22,7 +22,7 @@ import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|||||||
const settingDefaultValue = vi.hoisted(() => 42);
|
const settingDefaultValue = vi.hoisted(() => 42);
|
||||||
const settingPath = ['test', 'number'];
|
const settingPath = ['test', 'number'];
|
||||||
|
|
||||||
vi.mock('../../settings.json', () => ({
|
vi.mock('../../config.js', () => ({
|
||||||
default: {
|
default: {
|
||||||
contents: [
|
contents: [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import settings from '../settings.json';
|
import settings from '../config.js';
|
||||||
import { useSettingsStore } from '../stores/settingsStore';
|
import { useSettingsStore } from '../stores/settingsStore';
|
||||||
import { getSettingRecursively } from '../utils/getSetting';
|
import { getSettingRecursively } from '../utils/getSetting';
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2026 Seekra
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export default {
|
||||||
|
contents: [
|
||||||
|
{
|
||||||
|
name: 'appearance',
|
||||||
|
i18n: 'settings.settings.appearance.title',
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
name: 'colorScheme',
|
||||||
|
type: 'selection',
|
||||||
|
i18n: 'settings.settings.appearance.contents.colorScheme.title',
|
||||||
|
default: 'auto',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
name: 'auto',
|
||||||
|
i18n: 'settings.settings.appearance.contents.colorScheme.options.auto'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'light',
|
||||||
|
i18n: 'settings.settings.appearance.contents.colorScheme.options.light'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'dark',
|
||||||
|
i18n: 'settings.settings.appearance.contents.colorScheme.options.dark'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
"contents": [
|
|
||||||
{
|
|
||||||
"name": "appearance",
|
|
||||||
"i18n": "settings.settings.appearance.title",
|
|
||||||
"content": [
|
|
||||||
{
|
|
||||||
"name": "colorScheme",
|
|
||||||
"type": "selection",
|
|
||||||
"i18n": "settings.settings.appearance.contents.colorScheme.title",
|
|
||||||
"default": "auto",
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"name": "auto",
|
|
||||||
"i18n": "settings.settings.appearance.contents.colorScheme.options.auto"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "light",
|
|
||||||
"i18n": "settings.settings.appearance.contents.colorScheme.options.light"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "dark",
|
|
||||||
"i18n": "settings.settings.appearance.contents.colorScheme.options.dark"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -18,7 +18,7 @@ limitations under the License.
|
|||||||
import LeftSidebarLayout from '@/layouts/LeftSidebarLayout.vue';
|
import LeftSidebarLayout from '@/layouts/LeftSidebarLayout.vue';
|
||||||
import SettingsPage from '../components/SettingsPage.vue';
|
import SettingsPage from '../components/SettingsPage.vue';
|
||||||
|
|
||||||
import settingsConfiguration from '../settings.json';
|
import settingsConfiguration from '../config.js';
|
||||||
import { getSettingRecursively } from '../utils/getSetting.js';
|
import { getSettingRecursively } from '../utils/getSetting.js';
|
||||||
import { computed, onMounted, ref, watch } from 'vue';
|
import { computed, onMounted, ref, watch } from 'vue';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ const settings = settingsHoisted.values();
|
|||||||
const originalCurrentSection = 's0';
|
const originalCurrentSection = 's0';
|
||||||
let currentSection = originalCurrentSection;
|
let currentSection = originalCurrentSection;
|
||||||
|
|
||||||
vi.mock('../../settings.json', () => ({
|
vi.mock('../../config.js', () => ({
|
||||||
default: { contents: settingsHoisted }
|
default: { contents: settingsHoisted }
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ import rawFonts from './styles/fonts.json';
|
|||||||
import './styles/common.css';
|
import './styles/common.css';
|
||||||
import './styles/variables/colors.css';
|
import './styles/variables/colors.css';
|
||||||
|
|
||||||
import settings from './features/settings/settings.json';
|
import settings from './features/settings/config.js';
|
||||||
import { validateSettingsConfig } from './features/settings/utils/settingsValidator';
|
import { validateSettingsConfig } from './features/settings/utils/settingsValidator';
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user