📌 Bloco VerdadeiroOuFalso
Este bloco representa um tipo de pergunta do tipo Verdadeiro ou Falso, onde os usuários devem selecionar a alternativa correta. Ele é utilizado dentro do Payload CMS para criação de conteúdos interativos.
🏗️ Estrutura do Bloco
Primeiro, importamos as dependências necessárias:
import { Block } from 'payload'
import {
FixedToolbarFeature,
InlineToolbarFeature,
lexicalEditor,
} from '@payloadcms/richtext-lexical'
Block
: Define um bloco reutilizável dentro do Payload CMS.lexicalEditor
: Permite a edição de texto rico para o enunciado da pergunta.FixedToolbarFeature
eInlineToolbarFeature
: Adicionam funcionalidades extras ao editor de texto.
🏷️ Definição do Bloco
Agora, criamos o bloco VerdadeiroOuFalso
:
const VerdadeiroOuFalso: Block = {
slug: 'verdadeiroOuFalso',
labels: {
singular: 'Verdadeiro ou Falso',
plural: 'Verdadeiros ou Falsos',
},
slug
: Nome interno do bloco.labels
: Define nomes para exibição no CMS.
❓ Campo da Pergunta
fields: [
{
name: 'pergunta',
label: 'Enunciado da Pergunta',
type: 'richText',
required: true,
editor: lexicalEditor({
features: ({ defaultFeatures }) => {
return [...defaultFeatures, FixedToolbarFeature(), InlineToolbarFeature()]
},
}),
},
name
: Identificador do campo no banco de dados.label
: Nome do campo no CMS.type
:richText
permite formatação avançada no enunciado.required: true
: Torna o campo obrigatório.
🔘 Campo das Alternativas
{
name: 'alternativas',
label: 'Alternativas',
type: 'array',
required: true,
fields: [
{
type: 'row',
fields: [
{
name: 'valor',
label: 'Valor da Alternativa',
type: 'select',
options: [
{ label: 'Verdadeiro', value: 'true' },
{ label: 'Falso', value: 'false' },
],
required: true,
admin: {
width: '19%',
},
},
type: 'array'
: Permite múltiplas alternativas.valor
: Um camposelect
para escolher entre "Verdadeiro" e "Falso".
📝 Campo Explicação
{
name: 'explicacao',
label: 'Explicação (Opcional)',
type: 'textarea',
required: false,
},
- Permite que o criador da questão forneça uma explicação para a resposta.
✅ Código Completo
import { Block } from 'payload'
import {
FixedToolbarFeature,
InlineToolbarFeature,
lexicalEditor,
} from '@payloadcms/richtext-lexical'
const VerdadeiroOuFalso: Block = {
slug: 'verdadeiroOuFalso',
labels: {
singular: 'Verdadeiro ou Falso',
plural: 'Verdadeiros ou Falsos',
},
fields: [
{
name: 'pergunta',
label: 'Enunciado da Pergunta',
type: 'richText',
required: true,
editor: lexicalEditor({
features: ({ defaultFeatures }) => {
return [...defaultFeatures, FixedToolbarFeature(), InlineToolbarFeature()]
},
}),
},
{
name: 'alternativas',
label: 'Alternativas',
type: 'array',
required: true,
fields: [
{
type: 'row',
fields: [
{
name: 'valor',
label: 'Valor da Alternativa',
type: 'select',
options: [
{ label: 'Verdadeiro', value: 'true' },
{ label: 'Falso', value: 'false' },
],
required: true,
admin: {
width: '19%',
},
},
{
name: 'texto',
label: 'Texto da Alternativa',
type: 'textarea',
required: true,
admin: {
width: '79%',
},
},
],
},
],
},
{
name: 'explicacao',
label: 'Explicação (Opcional)',
type: 'textarea',
required: false,
},
],
}
export default VerdadeiroOuFalso