From 296aa4c1713709f7dde5aa0e9164c9e9275e14a3 Mon Sep 17 00:00:00 2001
From: zxc <1171051090@qq.com>
Date: Fri, 14 Mar 2025 20:59:57 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=9A=E4=B8=BB=E9=A2=98=E8=89=B2?=
=?UTF-8?q?=E7=BC=96=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/ColorListButton.vue | 52 ++++++++++++
src/hooks/useImport.ts | 1 +
src/hooks/useSlideTheme.ts | 33 +++-----
.../SlideDesignPanel/ThemeColorsSetting.vue | 81 +++++++++++++++++++
.../ThemeStylesExtract.vue | 0
.../index.vue} | 34 ++++----
src/views/Editor/Toolbar/index.vue | 2 +-
7 files changed, 165 insertions(+), 38 deletions(-)
create mode 100644 src/components/ColorListButton.vue
create mode 100644 src/views/Editor/Toolbar/SlideDesignPanel/ThemeColorsSetting.vue
rename src/views/Editor/Toolbar/{ => SlideDesignPanel}/ThemeStylesExtract.vue (100%)
rename src/views/Editor/Toolbar/{SlideDesignPanel.vue => SlideDesignPanel/index.vue} (96%)
diff --git a/src/components/ColorListButton.vue b/src/components/ColorListButton.vue
new file mode 100644
index 00000000..a175f33d
--- /dev/null
+++ b/src/components/ColorListButton.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/hooks/useImport.ts b/src/hooks/useImport.ts
index f248d9d1..df8f91d8 100644
--- a/src/hooks/useImport.ts
+++ b/src/hooks/useImport.ts
@@ -155,6 +155,7 @@ export default () => {
const width = json.size.width
slidesStore.setViewportSize(width * ratio)
+ slidesStore.setTheme({ themeColors: json.themeColors })
const slides: Slide[] = []
for (const item of json.slides) {
diff --git a/src/hooks/useSlideTheme.ts b/src/hooks/useSlideTheme.ts
index 47ed4dce..9d7cacfa 100644
--- a/src/hooks/useSlideTheme.ts
+++ b/src/hooks/useSlideTheme.ts
@@ -292,31 +292,23 @@ export default () => {
}
}
- // 应用预置主题(单页)
- const applyPresetThemeToSingleSlide = (theme: PresetTheme) => {
- const newSlide: Slide = JSON.parse(JSON.stringify(currentSlide.value))
- setSlideTheme(newSlide, theme)
- slidesStore.updateSlide({
- background: newSlide.background,
- elements: newSlide.elements,
- })
- addHistorySnapshot()
- }
-
- // 应用预置主题(全部)
- const applyPresetThemeToAllSlides = (theme: PresetTheme) => {
- const newSlides: Slide[] = JSON.parse(JSON.stringify(slides.value))
- for (const slide of newSlides) {
- setSlideTheme(slide, theme)
- }
+ // 应用预置主题
+ const applyPresetTheme = (theme: PresetTheme, resetSlides = false) => {
slidesStore.setTheme({
backgroundColor: theme.background,
themeColors: theme.colors,
fontColor: theme.fontColor,
fontName: theme.fontname,
})
- slidesStore.setSlides(newSlides)
- addHistorySnapshot()
+
+ if (resetSlides) {
+ const newSlides: Slide[] = JSON.parse(JSON.stringify(slides.value))
+ for (const slide of newSlides) {
+ setSlideTheme(slide, theme)
+ }
+ slidesStore.setSlides(newSlides)
+ addHistorySnapshot()
+ }
}
// 将当前主题配置应用到全部页面
@@ -373,8 +365,7 @@ export default () => {
return {
getSlidesThemeStyles,
- applyPresetThemeToSingleSlide,
- applyPresetThemeToAllSlides,
+ applyPresetTheme,
applyThemeToAllSlides,
}
}
\ No newline at end of file
diff --git a/src/views/Editor/Toolbar/SlideDesignPanel/ThemeColorsSetting.vue b/src/views/Editor/Toolbar/SlideDesignPanel/ThemeColorsSetting.vue
new file mode 100644
index 00000000..b4d332d9
--- /dev/null
+++ b/src/views/Editor/Toolbar/SlideDesignPanel/ThemeColorsSetting.vue
@@ -0,0 +1,81 @@
+
+
+
编辑主题色
+
+
+
+
幻灯片主题色{{ index + 1 }}:
+
+
+ themeColors[index] = value"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Editor/Toolbar/ThemeStylesExtract.vue b/src/views/Editor/Toolbar/SlideDesignPanel/ThemeStylesExtract.vue
similarity index 100%
rename from src/views/Editor/Toolbar/ThemeStylesExtract.vue
rename to src/views/Editor/Toolbar/SlideDesignPanel/ThemeStylesExtract.vue
diff --git a/src/views/Editor/Toolbar/SlideDesignPanel.vue b/src/views/Editor/Toolbar/SlideDesignPanel/index.vue
similarity index 96%
rename from src/views/Editor/Toolbar/SlideDesignPanel.vue
rename to src/views/Editor/Toolbar/SlideDesignPanel/index.vue
index 4eabd959..6c3dc6d6 100644
--- a/src/views/Editor/Toolbar/SlideDesignPanel.vue
+++ b/src/views/Editor/Toolbar/SlideDesignPanel/index.vue
@@ -162,18 +162,10 @@
-
+
+
@@ -284,8 +276,8 @@
-
-
+
+
@@ -299,6 +291,14 @@
>
+
+
+
+