diff --git a/packages/seo-plugin/package.json b/packages/seo-plugin/package.json index 4d70f215..e5ed3b5d 100644 --- a/packages/seo-plugin/package.json +++ b/packages/seo-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@directus-labs/seo-plugin", "type": "module", - "version": "1.1.0", + "version": "1.1.1", "description": "SEO plugin for Directus", "license": "MIT", "repository": { diff --git a/packages/seo-plugin/src/seo-interface/interface.vue b/packages/seo-plugin/src/seo-interface/interface.vue index d5add537..82286ff3 100644 --- a/packages/seo-plugin/src/seo-interface/interface.vue +++ b/packages/seo-plugin/src/seo-interface/interface.vue @@ -5,7 +5,7 @@ import { formatTitle } from '@directus/format-title'; import { set } from 'lodash-es'; import { TabsContent, TabsIndicator, TabsList, TabsRoot, TabsTrigger } from 'reka-ui'; -import { computed, defineEmits, defineProps, toRefs } from 'vue'; +import { computed, onMounted, toRefs } from 'vue'; import OgImagePreview from '../shared/components/OgImagePreview.vue'; import SearchPreview from '../shared/components/SearchPreview.vue'; @@ -32,26 +32,34 @@ const emit = defineEmits<(event: 'input', value: SeoValue) => void>(); const { value } = toRefs(props); +function getDefaultSeoValue(): SeoValue { + return { + title: '', + meta_description: '', + focus_keyphrase: '', + og_image: '', + sitemap: { + priority: '0.5', + change_frequency: 'weekly', + }, + no_index: false, + no_follow: false, + additional_fields: {}, + }; +} + const internalValue = computed({ get() { if (!value.value) { - // Return default structure with sitemap defaults when value is null return { - title: '', - meta_description: '', - focus_keyphrase: '', - og_image: '', + ...getDefaultSeoValue(), sitemap: { priority: props.defaultPriority || '0.5', change_frequency: props.defaultChangeFrequency || 'weekly', }, - no_index: false, - no_follow: false, - additional_fields: {}, }; } - // For existing values, ensure sitemap defaults are merged if not present return { ...value.value, sitemap: { @@ -66,6 +74,12 @@ const internalValue = computed({ }, }); +onMounted(() => { + if (!value.value) { + emit('input', internalValue.value); + } +}); + function updateField(field: string, value: unknown) { if (!props.value) { const newValue = set({}, field, value);