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

55 lines
1.2 KiB
TypeScript

import {EarthGlobeIcon} from '@sanity/icons'
import {defineField} from 'sanity'
export default defineField({
title: 'External Link',
name: 'linkExternal',
type: 'object',
icon: EarthGlobeIcon,
description: 'Link to content on external site.',
fields: [
// Title
defineField({
title: 'Title',
name: 'title',
type: 'string',
description: 'Descriptive text for the content on this link.'
}),
// URL
defineField({
name: 'url',
title: 'URL',
type: 'url',
description: 'Link to websites, e-mail address or phone number.',
validation: (Rule) => Rule.required().uri({scheme: ['http', 'https', 'mailto', 'tel']})
}),
// Open in a new window?
defineField({
title: 'Open in a new window?',
name: 'newWindow',
type: 'boolean',
description: 'If set to true, opens the link in a new window.',
initialValue: false,
})
],
preview: {
select: {
title: 'title',
url: 'url',
},
prepare(selection) {
const {title, url} = selection
let subtitle = []
if (url) {
subtitle.push(`${url}`)
}
return {
title,
subtitle: subtitle.join(' '),
}
},
},
})