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 @@ + + + + + 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 @@ - + +