Pular para o conteúdo principal

Formulário Modal

Criação e gerenciamento de formulários em janelas modais.

Introdução​

O Modal é um recurso de (UI) que permite abrir um formulário sem que o usuário precise sair da página atual.

O uso de modais melhora significativamente a Experiência do Usuário (UX), permitindo a execução de operações de CRUD (Criar, Ler, Atualizar, Excluir) sem a necessidade de recarregar a página ou perder o contexto da tela atual.

O Netuno gerencia automaticamente a comunicação com o backend e a injeção do HTML necessário.

Pré-requisitos​

Para implementar os exemplos, você precisará de:

  • Acesso ao ambiente de desenvolvimento de sua aplicação Netuno.
  • Um formulário devidamente configurado no painel administrativo (backoffice) do Netuno.
  • Conhecimento básico em JavaScript e manipulação de eventos no DOM.

Nos exemplos a seguir, utilizaremos um formulário genérico chamado "test".

Caso tenha dúvidas nestas etapas, consulte: Formulários.

Estrutura Base​

A criação e manipulação de modais no Netuno é centralizada no objeto netuno.modal.

O método netuno.modal.create() cria a estrutura base do modal na interface. Recebe um objeto de configuração com as seguintes propriedades:

  • name (String): O nome do formulário (criado no backoffice) que servirá de base para o modal.
  • callback (Function): Função executada assim que a estrutura do modal é injetada no DOM (mas antes de ser exibida), recebe como parâmetro o elemento do modal criado.

Função Callback​

Dentro da função callback, deverá definir qual será o estado (modo) do formulário utilizando as funções de carregamento nativas:

  • Modo Listagem - netuno.loadForm(): Renderiza a tabela de pesquisa e listagem dos registros daquele formulário.

  • Modo Edição/Criação - netuno.loadFormEdit(): Renderiza os campos de input do formulário. Pode ser usado para inserir um novo registro ou editar um existente.

Implementação​

Abaixo, detalhamos três cenários de uso mais comuns.

1. Modo de Listagem​

O netuno.loadForm() é utilizado quando você deseja que o usuário visualize todos os dados de um formulário em formato de tabela (grid) de pesquisa.

netuno.modal.create({
name: 'test',
callback: function (modal) {
// 1. Localiza o contêiner interno destinado a receber o formulário
let formContainer = modal.find('[netuno-form]');
// 2. Injeta a lista de dados do formulário no contêiner
netuno.loadForm(formContainer);
// 3. Exibe o modal para o usuário
netuno.modal.show(modal);
}
});

2. Modo de Criação​

O netuno.loadFormEdit() é utilizado para botões do tipo "Adicionar Novo". Abre o formulário limpo, pronto para a entrada de dados.

netuno.modal.create({
name: 'test',
callback: function (modal) {
let formContainer = modal.find('[netuno-form]');
// Carrega o formulário em modo de inserção (novo registro)
netuno.loadFormEdit(formContainer);
netuno.modal.show(modal);
}
});
info

Ao utilizar netuno.loadFormEdit() sem passar um ID, o Netuno entende que você quer usar a "tela de edição" a partir do zero. Ele carrega a interface com os inputs vazios, prontos para a criação de um novo registro. Nesse cenário, o Netuno dispara internamente o evento netuno:new.

3. Modo de Edição​

Se você precisa que o modal carregue um registro específico para alteração, deve passar o UID ou ID do registro como segundo parâmetro na função de carregamento.

// Exemplo: Editando o registro de ID 1234
const recordId = 1234;

netuno.modal.create({
name: 'test',
callback: function (modal) {
let formContainer = modal.find('[netuno-form]');
// Injeta os dados do registro 1234 nos campos do formulário
netuno.loadFormEdit(formContainer, recordId);
netuno.modal.show(modal);
}
});

Eventos​

O contêiner do formulário ([netuno-form]) emite eventos customizados que acompanham o ciclo de vida da interação do usuário.

É recomendado o uso desses eventos para disparar lógicas de negócios específicas do seu frontend (como atualizar tabelas em background, exibir alertas, etc).

TIPO DE EVENTODESCRIÇÃO
netuno:newDisparado quando a tela de criação de um novo item é exibida.
netuno:editDisparado quando a tela de edição de um item existente é exibida.
netuno:saveDisparado quando um novo item é adicionado.
netuno:backDisparado após o clique no botão de voltar.
netuno:deleteDisparado após a exclusão de um item.

Exemplo: Interceptando Múltiplos Eventos​

Neste exemplo pronto para produção, criamos o modal e adicionamos listeners para acompanhar o sucesso das operações do usuário:

netuno.modal.create({
name: 'test',
callback: function (modal) {
let formContainer = modal.find('[netuno-form]');

// Monitorando a tela de inserção
formContainer.on('netuno:new', function(event) {
console.info("Interface de criação carregada.");
});

// Monitorando um salvamento bem-sucedido
formContainer.on('netuno:save', function(event) {
console.success("O registro foi salvo com sucesso!");
// Exemplo: Fechar o modal automaticamente após salvar
netuno.modal.hide(modal);
});

// Renderizando o modal em modo de lista e exibindo
netuno.loadForm(formContainer);
netuno.modal.show(modal);
}
});

Caso tenha dificuldades ou sugestões de melhoria, entre em contato. Nossa equipe e comunidade estão prontas para ajudar.

Bom desenvolvimento!