commerce/lib/sanity/schemas/objects/linkInternal.ts
2023-08-14 12:06:46 +02:00

57 lines
1.3 KiB
TypeScript

import {LinkIcon} from '@sanity/icons'
import {defineField} from 'sanity'
import {PAGE_REFERENCES} from '../../constants'
export default defineField({
title: 'Internal Link',
name: 'linkInternal',
type: 'object',
description: 'Link to content on this site.',
icon: LinkIcon,
fields: [
// Title
defineField({
title: 'Title',
name: 'title',
type: 'string',
description: 'If empty, displays the current reference title.'
}),
// Reference
defineField({
name: 'reference',
type: 'reference',
title: 'Content reference',
description: 'Link to already created, internal content.',
weak: true,
to: PAGE_REFERENCES,
}),
],
preview: {
select: {
reference: 'reference',
referenceTitle: 'reference.title',
referenceType: 'reference._type',
title: 'title',
},
prepare(selection) {
const {
reference,
referenceTitle,
title,
} = selection
let subtitle = []
if (reference) {
subtitle.push([`${referenceTitle || reference?._id}`])
} else {
subtitle.push('(Nonexistent document reference)')
}
return {
title,
subtitle: subtitle.join(' '),
}
},
},
})