Desenvolvedores
src_
collections
cursos
Modulo.ts

📚 Módulo Modulo.ts

O arquivo Modulo.ts, localizado na pasta cursos em collections, é responsável pelo módulo Modulos. Esse módulo é utilizado para organizar as aulas dentro de um curso, contendo campos essenciais como nome, descrição e aulas associadas.

🛠️ Configuração do Módulo

import { Field } from 'payload'
import { aulas } from './Aula'
import {
  lexicalEditor,
  FixedToolbarFeature,
  InlineToolbarFeature,
} from '@payloadcms/richtext-lexical'
 
export const modulos: Field = {
  name: 'modulo',
  type: 'group',
  fields: [
    {
      name: 'nomeModulo',
      label: 'Nome',
      type: 'text',
      unique: true,
      required: true,
      maxLength: 100,
    },
    {
      name: 'descricao',
      label: 'Descrição',
      type: 'richText',
      editor: lexicalEditor({
        features: ({ defaultFeatures }) => {
          return [...defaultFeatures, FixedToolbarFeature(), InlineToolbarFeature()]
        },
      }),
      required: true,
    },
    {
      name: 'aulas',
      label: 'Aulas',
      type: 'array',
      fields: [aulas],
    },
  ],
}

🔍 Atributos do Módulo

Cada módulo contém atributos essenciais para sua estruturação:

  • Name: Identificador interno do módulo.
  • Type: Define o tipo de dado armazenado.
  • Fields: Conjunto de campos pertencentes ao módulo.

📌 Campos do Módulo

1️⃣ Nome do Módulo

  • 🔹 Name: nomeModulo
  • 🏷️ Label: Nome
  • 📌 Type: text
  • ✅ Unique: true
  • ⚠️ Required: true
  • ✍️ Max Length: 100
  • 📖 Descrição: Nome único e obrigatório do módulo, limitado a 100 caracteres.

2️⃣ Descrição

  • 🔹 Name: descricao
  • 🏷️ Label: Descrição
  • 📌 Type: richText
  • ⚠️ Required: true
  • 🖋️ Editor: Lexical com suporte a:
    • 🛠️ FixedToolbarFeature: Barra de ferramentas fixa.
    • ⚡ InlineToolbarFeature: Barra de ferramentas inline.
  • 📖 Descrição: Texto formatável sobre o módulo.

3️⃣ Aulas

  • 🔹 Name: aulas
  • 🏷️ Label: Aulas
  • 📌 Type: array
  • 📦 Fields: aulas (Importa a estrutura do arquivo Aula.ts)
  • 📖 Descrição: Lista de aulas vinculadas ao módulo.

✅ Considerações Finais

O módulo modulos facilita a organização das aulas dentro de um curso, garantindo que cada módulo contenha múltiplas aulas e informações bem estruturadas.

🔄 Exemplos de Uso

  • ➕ Adicionar Módulo: Criar um módulo novo com nome, descrição e aulas.
  • 📝 Editar Módulo: Atualizar informações de um módulo existente.
  • 👀 Visualizar Módulo: Exibir detalhes do módulo, incluindo as aulas associadas.

🔎 Código Completo

import { Field } from 'payload'
import { aulas } from './Aula'
import {
  lexicalEditor,
  FixedToolbarFeature,
  InlineToolbarFeature,
} from '@payloadcms/richtext-lexical'
 
export const modulos: Field = {
  name: 'modulo',
  type: 'group',
  fields: [
    {
      name: 'nomeModulo',
      label: 'Nome',
      type: 'text',
      unique: true,
      required: true,
      maxLength: 100,
    },
    {
      name: 'descricao',
      label: 'Descrição',
      type: 'richText',
      editor: lexicalEditor({
        features: ({ defaultFeatures }) => {
          return [...defaultFeatures, FixedToolbarFeature(), InlineToolbarFeature()]
        },
      }),
      required: true,
    },
    {
      name: 'aulas',
      label: 'Aulas',
      type: 'array',
      fields: [aulas],
    },
  ],
}