diff --git a/src/layouts/modules/theme-drawer/modules/config-operation.vue b/src/layouts/modules/theme-drawer/modules/config-operation.vue
index 04408f2a..5386a679 100644
--- a/src/layouts/modules/theme-drawer/modules/config-operation.vue
+++ b/src/layouts/modules/theme-drawer/modules/config-operation.vue
@@ -38,6 +38,14 @@ function handleReset() {
}, 50);
}
+function handleRestore() {
+ themeStore.restoreThemeSettings();
+
+ setTimeout(() => {
+ window.$message?.success($t('theme.configOperation.restoreSuccessMsg'));
+ }, 50);
+}
+
const dataClipboardText = computed(() => getClipboardText());
onMounted(() => {
@@ -49,6 +57,7 @@ onMounted(() => {
{{ $t('theme.configOperation.resetConfig') }}
+
{{ $t('theme.configOperation.restoreConfig') }}
{{ $t('theme.configOperation.copyConfig') }}
diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts
index 81508a56..8f94fef6 100644
--- a/src/locales/langs/en-us.ts
+++ b/src/locales/langs/en-us.ts
@@ -132,8 +132,10 @@ const local: App.I18n.Schema = {
configOperation: {
copyConfig: 'Copy Config',
copySuccessMsg: 'Copy Success, Please replace the variable "themeSettings" in "src/theme/settings.ts"',
- resetConfig: 'Reset Config',
- resetSuccessMsg: 'Reset Success'
+ resetConfig: 'Reset',
+ resetSuccessMsg: 'Reset Success',
+ restoreConfig: 'Restore',
+ restoreSuccessMsg: 'Restore Success'
}
},
route: {
diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts
index f5ba30e4..c7c2bad8 100644
--- a/src/locales/langs/zh-cn.ts
+++ b/src/locales/langs/zh-cn.ts
@@ -133,7 +133,9 @@ const local: App.I18n.Schema = {
copyConfig: '复制配置',
copySuccessMsg: '复制成功,请替换 src/theme/settings.ts 中的变量 themeSettings',
resetConfig: '重置配置',
- resetSuccessMsg: '重置成功'
+ resetSuccessMsg: '重置成功',
+ restoreConfig: '恢复默认配置',
+ restoreSuccessMsg: '恢复成功'
}
},
route: {
diff --git a/src/store/modules/theme/index.ts b/src/store/modules/theme/index.ts
index fa2e77f6..4862c63f 100644
--- a/src/store/modules/theme/index.ts
+++ b/src/store/modules/theme/index.ts
@@ -56,10 +56,15 @@ export const useThemeStore = defineStore(SetupStoreId.Theme, () => {
const settingsJson = computed(() => JSON.stringify(settings.value));
/** Reset store */
- function resetStore() {
+ function resetStore(state?: Partial
) {
const themeStore = useThemeStore();
const reset = themeStore.$reset as (arg?: Partial) => void;
- reset(themeSettings);
+ reset(state);
+ }
+
+ /** Restore theme settings */
+ function restoreThemeSettings() {
+ resetStore(themeSettings);
}
/**
@@ -187,6 +192,7 @@ export const useThemeStore = defineStore(SetupStoreId.Theme, () => {
settingsJson,
setGrayscale,
resetStore,
+ restoreThemeSettings,
setThemeScheme,
toggleThemeScheme,
updateThemeColors,
diff --git a/src/typings/app.d.ts b/src/typings/app.d.ts
index e1b4b1ee..2ae75395 100644
--- a/src/typings/app.d.ts
+++ b/src/typings/app.d.ts
@@ -351,6 +351,8 @@ declare namespace App {
copySuccessMsg: string;
resetConfig: string;
resetSuccessMsg: string;
+ restoreConfig: string;
+ restoreSuccessMsg: string;
};
};
route: Record;