From e6f31759a0d6a375323b723140b8b992fac9124c Mon Sep 17 00:00:00 2001 From: Ryan Wang Date: Tue, 18 Jul 2023 16:16:02 +0800 Subject: [PATCH] feat: allow switching editors while editing a post (#4180) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /area console /kind feature /milestone 2.8.x #### What this PR does / why we need it: 支持在编辑文章时切换编辑器,不再限制仅新建时允许切换。但需要注意的是,目前只支持同类型的编辑器切换(rawType)。 #### Which issue(s) this PR fixes: Fixes #4176 #### Special notes for your reviewer: 测试方式: 1. 安装多个编辑器插件,可以在 https://github.com/halo-sigs/awesome-halo 中查找。 2. 测试在新建文章时是否能够正常切换编辑器。 3. 测试在修改文章时能够正常切换同类型的编辑器。 #### Does this PR introduce a user-facing change? ```release-note Console 端编辑文章时允许同类型的编辑器切换。 ``` --- .../src/components/dropdown/DropdownItem.vue | 17 +++++++- .../EditorProviderSelector.vue | 7 ++++ console/src/constants/annotations.ts | 6 +++ .../contents/pages/SinglePageEditor.vue | 33 +++++++++------ .../components/SinglePageSettingModal.vue | 34 +-------------- .../composables/use-page-update-mutate.ts | 42 +++++++++++++++++++ .../src/modules/contents/posts/PostEditor.vue | 33 ++++++++++----- .../posts/components/PostSettingModal.vue | 34 +-------------- .../composables/use-post-update-mutate.ts | 41 ++++++++++++++++++ 9 files changed, 157 insertions(+), 90 deletions(-) create mode 100644 console/src/modules/contents/pages/composables/use-page-update-mutate.ts create mode 100644 console/src/modules/contents/posts/composables/use-post-update-mutate.ts diff --git a/console/packages/components/src/components/dropdown/DropdownItem.vue b/console/packages/components/src/components/dropdown/DropdownItem.vue index 6e3403e5c..3c19dc5a7 100644 --- a/console/packages/components/src/components/dropdown/DropdownItem.vue +++ b/console/packages/components/src/components/dropdown/DropdownItem.vue @@ -2,13 +2,15 @@ import { DropdownContextInjectionKey } from "./symbols"; import { inject } from "vue"; -withDefaults( +const props = withDefaults( defineProps<{ selected?: boolean; + disabled?: boolean; type: "default" | "danger"; }>(), { selected: false, + disabled: false, type: "default", } ); @@ -20,6 +22,10 @@ const emit = defineEmits<{ const { hide } = inject(DropdownContextInjectionKey) || {}; function onClick(e: MouseEvent) { + if (props.disabled) { + return; + } + hide?.(); emit("click", e); } @@ -28,7 +34,10 @@ function onClick(e: MouseEvent) {