diff --git a/components/admin/AdminPageForm.vue b/components/admin/AdminPageForm.vue index 832e111..7754d9c 100644 --- a/components/admin/AdminPageForm.vue +++ b/components/admin/AdminPageForm.vue @@ -18,6 +18,7 @@ const emit = defineEmits(['submit']) const slugTouched = ref(Boolean(props.initialPage.slug)) const blockEditor = ref(null) +const htmlEditor = ref(null) const mediaItems = ref([]) const isMediaPickerOpen = ref(false) const isLoadingMedia = ref(false) @@ -26,6 +27,7 @@ const isUploadingFeaturedImage = ref(false) const form = reactive({ title: props.initialPage.title || '', slug: props.initialPage.slug || '', + renderMode: props.initialPage.renderMode || 'markdown', content: props.initialPage.content || '', featuredImage: props.initialPage.featuredImage || '' }) @@ -140,9 +142,23 @@ const uploadFeaturedImage = async (event) => { * @returns {void} */ const focusContentEditor = () => { + if (form.renderMode === 'html_document') { + htmlEditor.value?.focus() + return + } + blockEditor.value?.focusFirstBlock() } +/** + * 페이지 작성 모드를 변경한다. + * @param {'markdown'|'html_document'} mode - 페이지 작성 모드 + * @returns {void} + */ +const setRenderMode = (mode) => { + form.renderMode = mode +} + /** * 페이지 입력값 제출 * @returns {void} @@ -151,6 +167,7 @@ const submitPage = () => { emit('submit', { title: form.title.trim(), slug: toSlug(form.slug || form.title), + renderMode: form.renderMode, content: form.content, featuredImage: form.featuredImage.trim() || null }) @@ -170,12 +187,58 @@ const submitPage = () => { @keydown.enter.prevent="focusContentEditor" > -
+
+