defineViews — Declaração de UI
Os helpers define*View constroem objetos tipados que o Core usa para gerar rotas, sidebar e componentes automaticamente.
defineCollectionView
Renderiza uma tabela paginada com CRUD completo.
import { defineCollectionView } from "@oondemand/oon-core-front";
// Modo dinâmico — tudo gerado a partir de /core/models/:model
defineCollectionView({
model: "Cliente",
label: "Clientes",
section: "Cadastros",
});
// Modo full — colunas e form explícitos
defineCollectionView({
model: "Pedido",
label: "Pedidos",
mode: "full",
columns: [
{ field: "numero", label: "Nº", sortable: true },
{ field: "cliente", label: "Cliente" },
{ field: "total", label: "Total", kind: "currency" },
{ field: "status", label: "Status", kind: "enum" },
],
form: [
{ field: "numero", label: "Número", required: true },
{ field: "cliente", label: "Cliente", kind: "ref" },
{ field: "total", label: "Total", kind: "currency" },
{ field: "status", label: "Status", kind: "enum",
options: ["novo", "confirmado", "entregue"] },
],
importExport: true,
});
Opções
| Campo | Tipo | Descrição |
|---|---|---|
model | string | ✅ Nome do Model no backend |
label | string | Label no menu |
mode | "dynamic" | "full" | "minimal" | Default: "dynamic" |
columns | OonColumnDef[] | Colunas (modo full) |
form | OonFormFieldDef[] | Campos do formulário (modo full) |
importExport | boolean | Exibe botão de import/export |
section | string | Seção no menu lateral |
permissions | string[] | Permissões para acessar a view |
defineDocumentView
Renderiza um formulário de documento único com workflow de aprovação.
import { defineDocumentView } from "@oondemand/oon-core-front";
defineDocumentView({
model: "ContratoServico",
label: "Contratos",
approval: true,
attachments: true,
section: "Documentos",
});
definePipelineView
Renderiza um Kanban de tickets.
import { definePipelineView } from "@oondemand/oon-core-front";
definePipelineView({
model: "Servico",
label: "Atendimento",
stageField: "etapa",
stages: [
{ id: "aberto", label: "Aberto" },
{ id: "em_andamento", label: "Em andamento" },
{ id: "concluido", label: "Concluído" },
],
});
defineDashboard
Renderiza um painel com widgets de contagem/agregação.
import { defineDashboard } from "@oondemand/oon-core-front";
defineDashboard({
label: "Dashboard",
widgets: [
{ id: "total-clientes", label: "Clientes", model: "Cliente", kind: "count" },
{ id: "total-pedidos", label: "Pedidos", model: "Pedido", kind: "count" },
{ id: "receita", label: "Receita", model: "Pedido", kind: "sum", field: "total" },
],
});
defineOonModule
Para agrupamentos mais complexos com rotas customizadas:
import { defineOonModule, defineCollectionView } from "@oondemand/oon-core-front";
const moduloFinanceiro = defineOonModule({
id: "financeiro",
label: "Financeiro",
views: [
defineCollectionView({ model: "Pagamento", label: "Pagamentos" }),
defineCollectionView({ model: "Recebimento", label: "Recebimentos" }),
defineDashboard({ label: "Resumo Financeiro", widgets: [...] }),
],
});
start({
// ...
modules: [moduloFinanceiro],
});