Files
payload/test/live-preview/blocks/ArchiveBlock/index.ts
2023-10-06 12:32:13 -04:00

100 lines
2.3 KiB
TypeScript

import type { Block } from '../../../../packages/payload/src/fields/config/types'
export const Archive: Block = {
slug: 'archive',
labels: {
singular: 'Archive',
plural: 'Archives',
},
fields: [
{
name: 'introContent',
label: 'Intro Content',
type: 'richText',
},
{
name: 'populateBy',
type: 'select',
defaultValue: 'collection',
options: [
{
label: 'Collection',
value: 'collection',
},
{
label: 'Individual Selection',
value: 'selection',
},
],
},
{
type: 'select',
name: 'relationTo',
label: 'Collections To Show',
defaultValue: 'posts',
admin: {
condition: (_, siblingData) => siblingData.populateBy === 'collection',
},
options: [
{
label: 'Posts',
value: 'posts',
},
],
},
{
type: 'relationship',
name: 'categories',
label: 'Categories To Show',
relationTo: 'categories',
hasMany: true,
admin: {
condition: (_, siblingData) => siblingData.populateBy === 'collection',
},
},
{
type: 'number',
name: 'limit',
label: 'Limit',
defaultValue: 10,
admin: {
condition: (_, siblingData) => siblingData.populateBy === 'collection',
step: 1,
},
},
{
type: 'relationship',
name: 'selectedDocs',
label: 'Selection',
relationTo: ['posts'],
hasMany: true,
admin: {
condition: (_, siblingData) => siblingData.populateBy === 'selection',
},
},
{
type: 'relationship',
name: 'populatedDocs',
label: 'Populated Docs',
relationTo: ['posts'],
hasMany: true,
admin: {
disabled: true,
description: 'This field is auto-populated after-read',
condition: (_, siblingData) => siblingData.populateBy === 'collection',
},
},
{
type: 'number',
name: 'populatedDocsTotal',
label: 'Populated Docs Total',
admin: {
step: 1,
disabled: true,
description: 'This field is auto-populated after-read',
condition: (_, siblingData) => siblingData.populateBy === 'collection',
},
},
],
}