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