Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/document-internationalization-omnisearch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@sanity/document-internationalization": minor
---

Add a `metadataOmnisearchVisibility` option to control whether translation metadata documents appear in Omnisearch.
4 changes: 4 additions & 0 deletions plugins/@sanity/document-internationalization/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,10 @@ export const defineConfig({
// - An array of schema type names: `hideLanguageFilter: ['lesson']`
// - A function for dynamic control: `hideLanguageFilter: (ctx) => ctx.schemaType === 'lesson'`
hideLanguageFilter: true, // defaults to false

// Optional
// Controls whether translation.metadata documents are visible in Omnisearch
metadataOmnisearchVisibility: true, // defaults to true
})
]
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@ export const DEFAULT_CONFIG: PluginConfigContext = {
allowCreateMetaDoc: false,
callback: null,
hideLanguageFilter: false,
metadataOmnisearchVisibility: true,
addTemplates: true,
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ export const documentInternationalization = definePlugin<PluginConfig>((config)
bulkPublish,
metadataFields,
hideLanguageFilter,
metadataOmnisearchVisibility,
metadataInternationalization,
addTemplates,
} = pluginConfig
Expand Down Expand Up @@ -125,7 +126,7 @@ export const documentInternationalization = definePlugin<PluginConfig>((config)
// - The `Translations metadata` document type to the schema
schema: {
// Create the metadata document type
types: [metadata(schemaTypes, metadataFields)],
types: [metadata(schemaTypes, metadataFields, metadataOmnisearchVisibility)],

// For every schema type this plugin is enabled on
// Create an initial value template to set the language
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ import {describe, expect, test} from 'vitest'
import {METADATA_SCHEMA_NAME, TRANSLATIONS_ARRAY_NAME} from '../../constants'
import createMetadataSchema from './metadata'

type MetadataSchema = ReturnType<typeof createMetadataSchema> & {
__experimental_omnisearch_visibility?: boolean
}

describe('metadata schema', () => {
const schemaTypes = ['article', 'page']

Expand Down Expand Up @@ -95,6 +99,24 @@ describe('metadata schema', () => {
expect(schema.liveEdit).toBe(true)
})

test('sets Omnisearch visibility to true by default', () => {
const schema = createMetadataSchema(schemaTypes, []) as MetadataSchema

expect(schema.__experimental_omnisearch_visibility).toBe(true)
})

test('configures Omnisearch visibility when provided', () => {
const schema = createMetadataSchema(schemaTypes, [], true) as MetadataSchema

expect(schema.__experimental_omnisearch_visibility).toBe(true)
})

test('configures Omnisearch visibility when provided false', () => {
const schema = createMetadataSchema(schemaTypes, [], false) as MetadataSchema

expect(schema.__experimental_omnisearch_visibility).toBe(false)
})

test('uses TranslateIcon', () => {
const schema = createMetadataSchema(schemaTypes, [])

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,14 @@ import type {TranslationReference} from '../../types'
* metadata fields provided by the plugin consumer. The document uses `liveEdit`
* so changes are published immediately without drafts.
*/
export default (schemaTypes: string[], metadataFields: FieldDefinition[]): DocumentDefinition =>
export default (schemaTypes: string[], metadataFields: FieldDefinition[], omnisearchVisibility = true): DocumentDefinition =>
defineType({
type: 'document',
name: METADATA_SCHEMA_NAME,
title: 'Translation metadata',
icon: TranslateIcon,
liveEdit: true,
__experimental_omnisearch_visibility: omnisearchVisibility,
fields: [
defineField({
name: TRANSLATIONS_ARRAY_NAME,
Expand Down
6 changes: 6 additions & 0 deletions plugins/@sanity/document-internationalization/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ export type PluginConfig = {
allowCreateMetaDoc?: boolean
callback?: ((args: PluginCallbackArgs) => Promise<void>) | null
hideLanguageFilter?: boolean | string[] | ((ctx: DocumentLanguageFilterContext) => boolean)
/**
* Controls whether the translation metadata document type appears in Omnisearch.
*
* Set to false to hide `translation.metadata` documents from Omnisearch.
*/
metadataOmnisearchVisibility?: boolean
/**
* Allows configuring the behavior of the internationalized array for the metadata document.
*/
Expand Down
Loading