Ir para o Conteúdo 1 Ir para a Página Inicial 2 Ir para o menu de Navegação 3 Ir para a Busca 4 Ir para o Mapa do site 5
Abrir menu principal de navegação
Receita Federal
Termos mais buscados
  • imposto de renda
  • assinatura
  • inss
  • mei
  • enem
Termos mais buscados
  • imposto de renda
  • assinatura
  • inss
  • Serviços
    • Serviços de A a Z
    • Auditorias Fiscais
      • Consultar procedimentos fiscais
      • Responder notificações
      • Obter laudo fiscal
    • Cadastros
      • Cidadão (CPF/CAEPF)
      • Pessoa Jurídica (CNPJ)
      • Imóvel Rural
      • Obra de Construção Civil
      • Grandes Contribuintes
      • Registros Especiais
    • Certidões e Atestados
      • Consultar certidões emitidas
      • Emitir certidão
      • Anular certidão
      • Obter atestado fiscal
    • Comércio Exterior
    • Comunicações Eletrônicas
      • Compartilhar dados fiscais
      • Consultar correio eletrônico
      • Consultar editais e ADEs
      • Optar pelo DTE
    • Declarações e Escriturações
      • Consultar informações
      • Entregar escrituração
      • Entregar declaração
      • Entregar documentos de malha
      • Cancelar declaração
      • Obter cópias de declarações
      • Simular cálculos
    • Defesas e Recursos
    • Interpretação e Programas
      • Consultar normas da RFB
      • Consultar soluções da RFB
      • Formalizar consulta de NCM
      • Formalizar consulta da legislação
    • Isenções e Regimes Especiais
    • Processos Digitais
      • Consultar processos
      • Juntar documentos a processo
      • Validar e assinar documentos
    • Autorizações de Acesso (Procurações)
      • Cadastrar ou cancelar procuração
      • Restringir procuração
    • Regularização de Impostos
      • Consultar dívidas e pendências
      • Pagar impostos
      • Alterar pagamentos
      • Consultar pagamentos
      • Parcelar dívidas
      • Consultar parcelamentos
      • Fazer acordo de transação
      • Revisar débitos e pendências
    • Restituições e Compensações
      • Consultar restituição
      • Obter restituição
      • Compensar impostos
    • Conveniados e Parceiros
      • Estados e Municípios
      • Rede Arrecadadora
      • Casa da Moeda
      • Outras Entidades
    • Reforma Tributária
      • Aderir ao Piloto da Reforma Tributária da Contribuição sobre Bens e Serviços (CBS)
      • Emitir Nota Fiscal de Serviço Eletrônica (NFS-e)
      • Consultar Nota Fiscal de Serviço Eletrônica (NFS-e)
  • Assuntos
    • Notícias
      • Todas as notícias
      • Arrecadação e Cobrança
      • Cidadania Fiscal
      • Combate ao contrabando
      • Combate à corrupção
      • Combate à sonegação
      • Institucional
      • Serviços
      • Tributação
    • Agenda Tributária
    • Taxas de Juros
    • Aduana e Comércio Exterior
      • Atendimento via e-CAC
      • Classificação Fiscal de Mercadorias
      • Controle de Carga e Trânsito (CCT)
      • Como Importar ou Exportar
      • Compras Internacionais
      • Guia do Viajante
      • Exportação
      • Importação
      • Intervenientes no Comércio Exterior
      • Manuais Aduaneiros
      • Operador Econômico Autorizado (OEA)
      • Regimes Aduaneiros Especiais
      • Remessas Internacionais
      • Serviços - Aduana
      • Siscomex
      • Notícias Aduaneiras
    • Meu CPF
    • Meu Imposto de Renda
    • Minhas Empresas e Negócios
    • Construção Civil
    • Leilão e Doação
    • Orientações sobre Processos Digitais
    • Transação Tributária
    • Mais Orientações Tributárias
      • Fiscalização
      • Benefícios Fiscais
      • Cadastros
      • Cobranças e Intimações
      • Controles Fiscais Especiais
      • Declarações e Demonstrativos
      • Julgamento Administrativo
      • Pagamentos e Parcelamentos
      • Restituição, Ressarcimento, Reembolso e Compensação
      • Senhas de acesso
      • Sigilo Fiscal
      • Tributos
  • Acesso à Informação
    • Institucional
      • Estrutura
      • Quem é Quem
      • Cadeia de Valor
      • Competências
      • História da Receita Federal
      • Planejamento Estratégico
      • Relações Internacionais
    • Ações e Programas
      • Ações, Atividades, Obras, Programas e Projetos
      • Carta de Serviços
      • Governança
    • Participação Social
      • Audiências e Consultas Públicas
      • Conselhos e Órgãos Colegiados
      • Congressos
      • Ouvidoria
    • Auditorias
    • Convênios e Transferências
    • Receitas e Despesas
    • Licitações e Contratos
      • Avisos de Edital de Leilao
      • Contratos
      • Licitações
      • Relatórios
      • Anexos
    • Servidores
    • Serviço de Informação ao Cidadão (SIC)
      • Relatórios
      • Autoridade de Monitoramento
      • Como utilizar
    • Perguntas Frequentes
      • Benefícios Fiscais
      • Cadastros
      • Compartilhamento de Dados
      • Concursos Públicos
      • Construção Civil
      • Declaração de Serviços Médicos e de Saúde
      • Imposto de Renda
      • Isenção para compra de carro
      • Piloto da Reforma Tributária do Consumo
      • Programa Nacional de Apoio às Microempresas e Empresas de Pequeno Porte
      • Receita de Consenso
      • Serviços Digitais
      • Transação Tributária
    • Dados Abertos
    • Sanções Administrativas
      • Decisões de Processo Administrativo de Responsabilização
      • Notificações e Intimações em Processo Administrativo de Responsabilização
    • Privacidade e Proteção de Dados
      • Boas Práticas
      • Encarregado
      • Relatórios de Auditoria
      • Termo de Uso e Privacidade
    • Legislação e Jurisprudência
      • Legislação
      • Jurisprudência
    • Processos Seletivos
  • Canais de Atendimento
    • Digital
    • Portal e-CAC
    • Presencial
    • E-mail
    • Online (Chat)
    • Fale Conosco
    • Conveniados
    • Alfândegas
    • Imprensa
    • Ouvidoria
      • Quem Somos
  • Centrais de Conteúdo
    • Atas e Pautas
      • Comitê Gestor do Programa de Produtividade da Receita Federal
      • Turmas Recursais - Atas e Pautas de Julgamento
      • Câmaras Recursais – Atas e Pautas de Julgamento
      • Comitê de Governança Institucional
    • Áudios
    • Editais
      • Editais Eletrônicos
      • Transação Tributária
      • Notificações e Intimações em Processo Administrativo de Responsabilização (PAR)
    • Formulários
      • Cadastros
      • Certidões
      • Comércio Exterior
      • Declarações
      • Impostos e Dívidas
      • Regimes Especiais
      • Outros Processos
      • Modelos de Documentos
      • Reforma Tributária
    • Imagens
    • Planilhas
    • Programas e Aplicativos
      • Apps para Celular e Tablet
      • Programas de Declaração
      • Programas do SPED
      • Restituição e Compensação
      • Receitanet
      • Validador de arquivos
    • Publicações
      • Acordos de Cooperação
      • Apresentações
      • Boletins
      • Documentos Técnicos
      • Estudos Tributários e Aduaneiros
      • Folheteria
      • Guias e Roteiros
      • Manuais
      • Materiais Didáticos
      • Modelos de Documentos
      • Passo a Passos
      • Perguntas e Respostas
      • Relatórios
      • Representações Fiscais
      • Revistas
      • Termos
      • Trabalhos Acadêmicos
      • Web Stories
    • Redes Sociais
    • Vídeos
      • TV Receita Federal
      • Cidadania Fiscal
      • Histórias de Trabalho
      • Mais Vídeos
  • Composição
  • Portais Relacionados
    • Empresas e Negócios
    • ENAT
    • eSocial
    • ITR Orientações para celebração de convênios
    • Nota Fiscal de Serviço Eletrônica (NFS-e)
    • Nota Fiscal Eletrônica
    • Nota Fiscal Eletrônica do Ouro (NF-e Ouro)
    • Portal CNIR
    • Procuradoria da Fazenda (PGFN)
    • Registrato
    • Simples Nacional
    • Sinter
    • Siscomex
    • Sped
  • GOV.BR
    • Serviços
      • Buscar serviços por
        • Categorias
        • Órgãos
        • Estados
      • Serviços por público alvo
        • Cidadãos
        • Empresas
        • Órgãos e Entidades Públicas
        • Demais segmentos (ONGs, organizações sociais, etc)
        • Servidor Público
    • Temas em Destaque
      • Orçamento Nacional
      • Redes de Atendimento do Governo Federal
      • Proteção de Dados Pessoais
      • Serviços para Imigrantes
      • Política e Orçamento Educacionais
      • Educação Profissional e Tecnológica
      • Educação Profissional para Jovens e Adultos
      • Trabalho e Emprego
      • Serviços para Pessoas com Deficiência
      • Combate à Discriminação Racial
      • Política de Proteção Social
      • Política para Mulheres
      • Saúde Reprodutiva da Mulher
      • Cuidados na Primeira Infância
      • Habitação Popular
      • Controle de Poluição e Resíduos Sólidos
    • Notícias
      • Serviços para o cidadão
      • Saúde
      • Agricultura e Pecuária
      • Cidadania e Assistência Social
      • Ciência e Tecnologia
      • Comunicação
      • Cultura e Esporte
      • Economia e Gestão Pública
      • Educação e Pesquisa
      • Energia
      • Forças Armadas e Defesa Civil
      • Infraestrutura
      • Justiça e Segurança
      • Meio Ambiente
      • Trabalho e Previdência
      • Turismo
    • Galeria de Aplicativos
    • Acompanhe o Planalto
    • Navegação
      • Acessibilidade
      • Mapa do Site
      • Termo de Uso e Aviso de Privacidade
    • Consultar minhas solicitações
    • Órgãos do Governo
    • Por dentro do Gov.br
      • Dúvidas Frequentes em relação ao Portal gov.br
      • Dúvidas Frequentes da conta gov.br
      • Ajuda para Navegar o Portal
      • Conheça os elementos do Portal
      • Política de e-participação
      • Termos de Uso
      • Governo Digital
      • Guia de Edição de Serviços do Portal Gov.br
    • Canais do Executivo Federal
    • Dados do Governo Federal
      • Dados Abertos
      • Painel Estatístico de Pessoal
      • Painel de Compras do Governo Federal
      • Acesso à Informação
    • Empresas e Negócios
Links Úteis
  • Galeria de Aplicativos
  • Participe
  • Galeria de Aplicativos
  • Participe
Redes sociais
  • Facebook
  • Instagram
  • Linkedin
  • Twitter
  • YouTube
Você está aqui: Página Inicial Centrais de Conteúdo Formulários Impostos e Dívidas Transação Transação especificação README.md
Info

README.md

Atualizado em 22/04/2025 15h55

text/markdown README.md — 27 KB

Conteúdo do arquivo

# Documentação para Criação de Arquivos HTML

## Visão Geral

Este documento define a arquitetura obrigatória para a criação de novos arquivos HTML utilizando componentes padrão, com foco na organização do conteúdo em seções (`<section>`), identificação com `id` e a inclusão seletiva de conteúdo para geração de PDF.

Cada parte relevante do documento HTML (formulários, tabelas, gráficos, etc.) **deve ser encapsulada** dentro de uma tag `<section>`. Além disso, cada seção **deve ter um `id` único** e, caso necessário, pode ser marcada para inclusão na geração de PDF ao adicionar a classe `toPdf`.

## Estrutura Padrão dos Arquivos HTML

### 1. Seções Obrigatórias

Todos os elementos do HTML devem ser agrupados dentro de uma tag `<section>`, que terá um `id` único, conforme o exemplo abaixo:

```html
<section id="formulario-cadastro">
  <!-- Conteúdo do formulário de cadastro -->
</section>
```

Essa abordagem ajuda a garantir a modularidade e a clareza do documento HTML.

### 2. Identificação das Seções

Cada tag `<section>` **deve** possuir um `id`. O `id` deve ser significativo e descritivo para facilitar a localização e o entendimento do conteúdo. Exemplo:

```html
<section id="tabela-produtos">
  <!-- Conteúdo da tabela de produtos -->
</section>
```

### 3. Inclusão de Seções no PDF

Para incluir seções específicas no PDF gerado, adicione a classe `toPdf` à `<section>`. Somente as seções que contiverem essa classe serão incluídas no documento PDF. Exemplo:

```html
<section id="resumo-relatorio" class="toPdf">
  <!-- Conteúdo do resumo que será incluído no PDF -->
</section>
```

Se uma seção não tiver a classe `toPdf`, ela **não será incluída** no PDF final.

## Componentes

### Visão Geral

A maioria dos componentes criados segue um padrão comum, aproveitando a API de Web Components nativa do JavaScript. Cada componente é uma classe que estende a `HTMLElement` e utiliza vários métodos padrão para garantir que os atributos sejam aplicados corretamente e que o template HTML seja carregado dinamicamente. A seguir, está uma explicação dos principais métodos e seu papel na arquitetura dos componentes:

### Estrutura Padrão

#### `constructor()`

O construtor é executado sempre que uma instância do componente é criada. Geralmente, o construtor inicializa o componente e, em muitos casos, carrega um template externo usando `fetch` para permitir a reutilização de HTML em vários componentes. No seu modelo de componentes, o método `loadTemplate()` é chamado dentro do construtor para carregar o HTML do componente.

#### `async loadTemplate()`

Este método assíncrono carrega o template HTML externo, normalmente armazenado em um arquivo separado. O template é então injetado no componente usando JavaScript. Esse design permite que o HTML seja mantido em arquivos separados do JavaScript, promovendo organização e modularidade.

- **Exemplo**:
  ```javascript
  const response = await fetch('./componentes/br-textarea/br-textarea.html');
  const templateText = await response.text();
  ```

O loadTemplate utiliza o método fetch para buscar o template HTML, que depois é convertido em um nó de template e adicionado ao componente.

#### `connectedCallback()`

Este método é chamado sempre que o componente é adicionado ao DOM pela primeira vez. Ele é o local ideal para adicionar comportamentos adicionais, como configurar atributos iniciais ou atualizar o componente com base nos valores passados para seus atributos.

No padrão de componentes, ele chama o método updateAttributes() para garantir que os atributos definidos no HTML sejam aplicados corretamente quando o componente é inserido na página.

#### `attributeChangedCallback(name, oldValue, newValue)`

Este método é invocado quando um dos atributos observados (definidos em observedAttributes()) é alterado. O nome do atributo e seus valores antigo e novo são passados como parâmetros, permitindo que o componente responda dinamicamente às mudanças nos atributos.

Esse método é utilizado para garantir que alterações nos atributos sejam refletidas no componente sem a necessidade de recarregar a página ou recriar o componente. No padrão adotado, ele chama o método updateAttributes() para garantir que as atualizações nos atributos sejam aplicadas corretamente.

#### `updateAttributes()`

Este é um método auxiliar que agrupa todas as atualizações de atributos que o componente precisa realizar. Ele delega a atualização de cada atributo específico para métodos individuais, como updateName(), updateLabel(), updateRows(), etc.

A vantagem dessa abordagem modular é a clareza do código, tornando-o mais legível e fácil de manter. Cada método individual lida com um único atributo, garantindo que os elementos HTML dentro do componente sejam atualizados conforme necessário.

#### `updateName(), updateLabel(), updateRows(), etc.`

Esses métodos são responsáveis por atualizar propriedades e atributos específicos dentro do componente, como name, label, rows, placeholder, required, e maxlength. Cada um desses métodos altera o elemento correto (por exemplo, textarea, label) com base nos valores fornecidos nos atributos do componente.

### Ciclo de Vida

Criação do Componente: O componente é criado com o constructor() e pode opcionalmente carregar um template HTML externo com loadTemplate().

Adição ao DOM: Quando o componente é adicionado ao DOM, o método connectedCallback() é chamado. Aqui, o componente pode configurar seu estado inicial.

Mudança de Atributos: Se os atributos do componente mudarem após a criação, o método attributeChangedCallback() é invocado, e as mudanças são aplicadas dinamicamente ao componente.

Remoção do DOM: Se necessário, o componente pode reagir à remoção do DOM, embora isso não tenha sido implementado explicitamente nos exemplos fornecidos.

### Observação de Atributos

Cada componente pode definir quais atributos serão observados por meio do método static get observedAttributes(). Esses atributos são monitorados e, se forem alterados, o método attributeChangedCallback() será chamado automaticamente, garantindo que o componente responda de maneira adequada às mudanças.

```javascript
static get observedAttributes() {
    return ['eName', 'label', 'rows', 'textareaClass', 'placeholder', 'required', 'maxlength'];
}
```

Esses atributos permitem que o componente seja altamente configurável diretamente no HTML, oferecendo flexibilidade ao usuário para personalizar o comportamento e aparência do componente.

### Resumo

Os componentes criados são modulares, reutilizáveis e altamente configuráveis. Eles aproveitam o ciclo de vida dos Web Components e a observação de atributos para garantir que o componente esteja sempre atualizado e sincronizado com os valores definidos no HTML. O padrão de separação de lógica (JavaScript) e estrutura (HTML via templates externos) promove a clareza e organização do código.

## br-cabecalho

O componente `<br-cabecalho>` é responsável por renderizar o cabeçalho padrão de cada documento HTML. Ele pode receber os seguintes atributos para customização:

- **titulo**: Define o título que será exibido no cabeçalho. Exemplo: `titulo="Meu Título"`.
- **subtitulo**: Define o subtítulo que será exibido abaixo do título. Exemplo: `subtitulo="Meu Subtítulo"`.

#### Exemplo de uso:

```html
<br-cabecalho-component titulo="Página Inicial" subtitulo="Bem-vindo ao sistema"></br-cabecalho-component>
```

## br-rodape

O componente `<br-rodape>` é responsável por renderizar o rodapé padrão de cada documento HTML. Ele não requer parâmetros adicionais, mas é obrigatório em todos os arquivos HTML para manter a consistência visual.

#### Exemplo de uso:

```html
<br-rodape-component></br-rodape-component>
```

## br-checkbox

O componente `<br-checkbox-component>` é utilizado para criar um checkbox estilizado, com suporte para rótulos personalizados. Ele oferece uma interface simples para incluir um checkbox em qualquer documento HTML e permite a configuração de atributos como `checkbox-id` e `label` diretamente no HTML.

#### Atributos

- **checkbox-id**: (Opcional) Define o identificador único do checkbox. Se não for fornecido, o valor padrão será `"checkbox-1"`.
- **label**: (Opcional) Define o texto do rótulo associado ao checkbox. Se não for fornecido, o checkbox será renderizado sem rótulo.

#### Exemplo de uso:

```html
<br-checkbox-component checkbox-id="aceitar-termos" label="Aceitar termos e condições"></br-checkbox-component>
```

No exemplo acima, um checkbox será renderizado com o ID aceitar-termos, e o rótulo associado será "Aceitar termos e condições".

Comportamento
Quando o componente é carregado (no método connectedCallback), o checkbox é renderizado com base nos atributos fornecidos. O atributo checkbox-id vincula o campo de entrada (`<input>`) ao rótulo (`<label>`), permitindo que o rótulo seja clicável e marque/desmarque o checkbox.

O componente também utiliza o método initializeCheckbox() para aplicar a lógica de inicialização específica do estilo do checkbox, usando a biblioteca core.BRCheckbox.

## br-input

O componente `<br-input-component>` é um campo de entrada (input) altamente configurável, que oferece suporte a diversos atributos para personalizar sua aparência e comportamento. Ele utiliza templates externos para separar a lógica do componente da estrutura HTML, permitindo fácil reutilização.

#### Atributos

- **inputId**: (Opcional) Define o ID do campo de entrada e também o vincula ao rótulo (`label`) correspondente. Exemplo: `inputId="meuInput"`.
- **eName**: (Opcional) Define o atributo `name` do campo de entrada, utilizado para envio de formulários. Exemplo: `eName="meuNome"`.
- **inputClass**: (Opcional) Aplica classes CSS ao campo de entrada, permitindo a personalização do estilo. Exemplo: `inputClass="input-grande"`.
- **inputStyle**: (Opcional) Aplica estilos inline diretamente no campo de entrada. Exemplo: `inputStyle="border: 1px solid red;"`.
- **label**: (Opcional) Define o texto do rótulo associado ao campo de entrada. Exemplo: `label="Nome Completo"`.
- **placeholder**: (Opcional) Define um texto temporário que aparece dentro do campo de entrada antes do preenchimento. Exemplo: `placeholder="Digite seu nome"`.
- **required**: (Opcional) Se presente, torna o campo de entrada obrigatório. Exemplo: `required`.
- **maxlength**: (Opcional) Define o número máximo de caracteres permitidos no campo de entrada. Exemplo: `maxlength="100"`.
- **initValue**: (Opcional) Define o valor inicial do campo de entrada. Exemplo: `initValue="Valor Padrão"`.
- **isDisabled**: (Opcional) Se presente, desabilita o campo de entrada, tornando-o não interativo. Exemplo: `isDisabled`.
- **Eventos customizados**: O componente permite a definição de eventos com atributos que começam com `on`, como `onClick`, `onChange`, etc. Esses atributos devem conter o nome de funções globais para serem chamadas quando o evento ocorrer.

#### Exemplo de uso:

```html
<br-input-component 
    inputId="nome" 
    eName="nomeUsuario" 
    inputClass="input-padrao" 
    label="Nome Completo" 
    placeholder="Digite seu nome completo" 
    required 
    maxlength="100" 
    initValue="João Silva" 
    isDisabled 
    onClick="handleClick, logInput"></br-input-component>
```

Neste exemplo, o campo de entrada terá:

* O ID e name configurados como "nome".
* Uma classe CSS input-padrao.
* Um rótulo com o texto "Nome Completo".
* Um valor inicial de "João Silva".
* Será obrigatório (required) e desabilitado (isDisabled).
* O campo disparará as funções handleClick e logInput quando o evento click ocorrer.

#### Funcionamento

* Atributos observados: O componente monitora uma série de atributos para alterar dinamicamente o estado do campo de entrada (como inputId, label, maxlength, etc.).
* Eventos customizados: O componente permite a associação de funções a eventos através de atributos como onClick, onChange, etc., associando eventos globais ao campo de entrada.
* Renderização dinâmica: Quando um atributo é alterado, o componente se atualiza automaticamente através do método attributeChangedCallback(), garantindo que as mudanças sejam refletidas no HTML sem a necessidade de recarregar a página.

O componente é ideal para casos onde um campo de entrada altamente configurável é necessário, e oferece suporte a diferentes cenários de personalização e validação.

## br-modal-simples-component

O componente `<br-modal-simples-component>` é utilizado para criar um modal simples, customizável e reutilizável, que pode ser exibido com título, mensagem e botões opcionais. Ele facilita a criação de diálogos modais com opções de personalização para interação com o usuário.

#### Atributos e Métodos

O componente não utiliza atributos HTML diretamente, mas possui métodos que permitem configurar dinamicamente o conteúdo e o comportamento do modal.

#### Métodos

- **showModal(titulo, mensagem, btn1Text, btn2Text, btn1OnClick = null, btn2OnClick = null)**: Exibe o modal com o título e a mensagem fornecidos, além de configurar os botões de ação (opcionalmente).

  - `titulo`: Define o título do modal.
  - `mensagem`: Define a mensagem que será exibida no corpo do modal.
  - `btn1Text`: (Opcional) Define o texto do primeiro botão. Se for omitido, o botão será ocultado.
  - `btn2Text`: (Opcional) Define o texto do segundo botão. Se for omitido, o botão será ocultado.
  - `btn1OnClick`: (Opcional) Define a função que será executada quando o primeiro botão for clicado.
  - `btn2OnClick`: (Opcional) Define a função que será executada quando o segundo botão for clicado.
- **closeModal()**: Fecha o modal, ocultando-o da tela.

#### Exemplo de uso:

```html
<br-modal-simples-component id="modalSimples"></br-modal-simples-component>

<script>
  const modal = document.getElementById('modalSimples');

  // Exibir o modal com título, mensagem e dois botões
  modal.showModal(
    'Confirmação',
    'Tem certeza que deseja continuar?',
    'Confirmar',
    'Cancelar',
    function() { alert('Confirmado!'); }, // Função chamada no clique de "Confirmar"
    function() { modal.closeModal(); }    // Função chamada no clique de "Cancelar"
  );
</script>
```

Neste exemplo, o modal exibe:

* Um título "Confirmação".
* Uma mensagem "Tem certeza que deseja prosseguir?".
* Dois botões: "Sim", que exibe um alerta ao ser clicado, e "Cancelar", que fecha o modal.

#### Funcionamento

* O modal é posicionado no centro da tela, com ajustes automáticos para manter sua visibilidade ao rolar a página.
* O método showModal() atualiza o conteúdo do modal e exibe os botões conforme as opções fornecidas. Se os textos dos botões forem omitidos, os botões não são exibidos.
* O método closeModal() esconde o modal, adicionando a classe d-none para ocultá-lo da interface.

Este componente oferece uma solução simples para a criação de diálogos e prompts em páginas web, com fácil customização de título, mensagem e botões de ação.

## br-select-component

O componente `<br-select-component>` é utilizado para criar um campo de seleção (select) customizado e interativo. Ele oferece suporte a opções dinâmicas, personalização de rótulos e classes, além de fornecer uma funcionalidade integrada para lidar com mudanças de valor através de eventos `onchange`.

#### Atributos

- **label**: (Opcional) Define o rótulo que será exibido acima do campo de seleção. Exemplo: `label="Escolha uma opção"`.
- **opcoes**: (Obrigatório) Nome da função global que retorna as opções a serem exibidas no campo de seleção. A função deve retornar um array de strings. Exemplo: `opcoes="getOpcoes"`.
- **onchangeFunc**: (Opcional) Nome da função JavaScript a ser chamada quando o valor selecionado mudar. Exemplo: `onchangeFunc="handleChange"`.
- **eName**: (Opcional) Define o atributo `name` para o campo de seleção, utilizado para envio em formulários. Exemplo: `eName="minhaSelecao"`.
- **required**: (Opcional) Define se o campo de seleção é obrigatório. Adicione este atributo para tornar o campo obrigatório.
- **inputClass**: (Opcional) Aplica classes CSS ao campo de seleção para personalizar seu estilo. Exemplo: `inputClass="input-grande"`.
- **inputId**: (Opcional) Define o `id` para o campo de seleção. Exemplo: `inputId="selecaoId"`.

#### Métodos

- **createOptions(opcoes)**: Gera o HTML das opções do campo de seleção com base no array fornecido.
- **updateOptions(opcoes)**: Permite atualizar as opções dinamicamente após o componente ter sido carregado. Exemplo:

  ```javascript
  const selectComponent = document.querySelector('br-select-component');
  selectComponent.updateOptions(['Opção 1', 'Opção 2', 'Opção 3']);
  ```

generateUniqueId(index): Gera um id único para cada opção de seleção, garantindo que múltiplos componentes possam coexistir sem conflito de IDs.
initializeSelect(): Inicializa o comportamento do campo de seleção, incluindo a lista suspensa e a funcionalidade de busca de opções.

#### Exemplo de uso:

```html
<br-select-component 
  label="Escolha uma cor" 
  opcoes="getCores" 
  onchangeFunc="handleColorChange" 
  eName="corSelecionada" 
  inputClass="custom-input" 
  inputId="selecaoDeCores" 
  required>
</br-select-component>

<script>
  function getCores() {
    return ['Vermelho', 'Azul', 'Verde', 'Amarelo'];
  }

  function handleColorChange() {
    alert('A cor selecionada mudou!');
  }
</script>
```

No exemplo acima, o componente de seleção:

* Usa a função getCores para gerar as opções de cor.
* Chama a função handleColorChange sempre que a seleção muda.
* Aplica classes CSS e o atributo required para personalização e validação.

#### Funcionamento

* Carregamento de Opções: O componente carrega as opções chamando a função definida no atributo opcoes. As opções são renderizadas dinamicamente no campo de seleção.
* Eventos de Mudança: Ao selecionar uma nova opção, a função definida no atributo onchangeFunc é chamada, permitindo a execução de qualquer lógica adicional necessária.
* Atualização Dinâmica: O método updateOptions() permite que as opções sejam atualizadas dinamicamente sem a necessidade de recarregar o componente, o que facilita o uso em cenários onde as opções podem mudar após a renderização inicial.

Esse componente é ideal para criar campos de seleção interativos com suporte a opções dinâmicas e eventos personalizados.

## br-textarea-component

O componente `<br-textarea-component>` é um campo de texto (textarea) personalizável, que permite configurar diversos atributos como rótulo, placeholder, número de linhas, e validação. Ele utiliza um template HTML externo para facilitar a reutilização e a organização do código.

#### Atributos

- **eName**: (Opcional) Define o atributo `name` do campo de texto, utilizado para envio em formulários. Exemplo: `eName="descricao"`.
- **label**: (Opcional) Define o rótulo exibido acima do campo de texto. Exemplo: `label="Descrição"`.
- **rows**: (Opcional) Define o número de linhas visíveis no campo de texto. Exemplo: `rows="5"`.
- **textareaClass**: (Opcional) Aplica classes CSS ao campo de texto para personalização de estilo. Exemplo: `textareaClass="textarea-grande"`.
- **placeholder**: (Opcional) Define um texto temporário que aparece dentro do campo de texto antes de ser preenchido. Exemplo: `placeholder="Digite sua descrição aqui"`.
- **required**: (Opcional) Se presente, torna o campo obrigatório para envio de formulários. Exemplo: `required`.
- **maxlength**: (Opcional) Define o número máximo de caracteres permitidos no campo de texto. Exemplo: `maxlength="500"`.

#### Exemplo de uso:

```html
<br-textarea-component 
    eName="comentarios" 
    label="Comentários" 
    rows="4" 
    textareaClass="custom-textarea" 
    placeholder="Deixe seus comentários aqui" 
    required 
    maxlength="200">
</br-textarea-component>
```

Neste exemplo, o campo de texto terá:

* Um rótulo "Comentários".
* O atributo name definido como "comentários".
* Quatro linhas visíveis.
* Um placeholder com o texto "Deixe seus comentários aqui".
* O campo será obrigatório (required) e terá um limite de 200 caracteres.

#### Funcionamento

* Carregamento de Template: O template do componente é carregado de um arquivo HTML externo, garantindo a separação da estrutura HTML e da lógica JavaScript.
* Atributos Dinâmicos: O componente monitora mudanças em atributos como eName, label, rows, placeholder, required, e maxlength, e atualiza automaticamente o campo de texto para refletir essas mudanças.
* Validação: Se o atributo required for definido, o campo de texto se torna obrigatório. O atributo maxlength define o número máximo de caracteres permitidos.

#### Métodos

* updateAttributes(): Atualiza todos os atributos do campo de texto, como nome, rótulo, classes, linhas, placeholder, obrigatoriedade e comprimento máximo.
* updateName(): Define o atributo name do campo de texto.
* updateLabel(): Define o conteúdo do rótulo associado ao campo de texto.
* updateClass(): Define as classes CSS aplicadas ao campo de texto.
* updateRows(): Define o número de linhas visíveis no campo de texto.
* updatePlaceholder(): Define o placeholder do campo de texto.
* updateRequired(): Define se o campo é obrigatório.
* updateMaxLength(): Define o número máximo de caracteres permitidos.

Este componente é ideal para criar campos de texto customizáveis e reutilizáveis em formulários, com suporte a validação e personalização de estilo.

## br-radio-horizontal

O `BRRadioHorizontalComponente` é um Web Component personalizado em JavaScript, que cria uma interface de rádio em formato horizontal. Este componente carrega dinamicamente um template HTML e permite que os atributos sejam definidos diretamente no HTML, como o ID, nome, classe, estilo, rótulo (label), e propriedades como `required` e `disabled`. Além disso, é possível associar eventos personalizados através de atributos do tipo `on<Evento>`.

#### Atributos

O componente aceita os seguintes atributos:

* **`inputId`** (string): Define o valor do atributo `id` para o elemento `input` do rádio e associa o `label` ao `input` através do atributo `for`.
* **`eName`** (string): Define o valor do atributo `name` para o elemento `input` do rádio, permitindo agrupar múltiplos botões de rádio.
* **`inputClass`** (string): Define classes CSS adicionais para o elemento `input` do rádio.
* **`inputStyle`** (string): Aplica estilos inline ao elemento `input` do rádio.
* **`label`** (string): Define o texto exibido como rótulo associado ao botão de rádio.
* **`required`** (boolean): Indica se o botão de rádio é obrigatório. Se o atributo estiver presente, o campo será obrigatório.
* **`isDisabled`** (boolean): Indica se o botão de rádio está desabilitado. Se o atributo estiver presente, o campo será desabilitado.
* **Eventos Personalizados** : Você pode associar eventos ao componente através de atributos como `onClick`, `onChange`, entre outros. O valor deve ser o nome de uma função global que será chamada quando o evento ocorrer. Por exemplo, `onClick="handleRadioClick"`.

#### Exemplo de uso:

```javascript
<br-radio-horizontal-component
    inputId="radio-opcao-1"
    eName="radioGroup"
    inputClass="custom-radio-class"
    inputStyle="margin-left: 10px;"
    label="Opção 1"
    required
    isDisabled="false"
    onClick="handleRadioClick">
</br-radio-horizontal-component>

```

#### Métodos

`updateAttributes()`

Atualiza todos os atributos do componente de acordo com os valores definidos no HTML.

`addEventListeners()`

Adiciona event listeners personalizados ao elemento `input`, baseados nos atributos que começam com `on<Evento>`.

`attributeChangedCallback(name, oldValue, newValue)`

É chamado sempre que um dos atributos observados (`inputId`, `eName`, `inputClass`, `inputStyle`, `label`, `required`, `isDisabled`) muda.

`connectedCallback()`

Executado quando o componente é adicionado ao DOM, inicializando os atributos e eventos.

#### Eventos

Você pode vincular eventos ao componente utilizando atributos no HTML:

```javascript
<br-radio-horizontal-component
    inputId="radio-opcao-2"
    label="Opção 2"
    onClick="handleRadioClick">
</br-radio-horizontal-component>

```

Neste exemplo, o evento `click` será capturado, e a função `handleRadioClick` será executada.

#### Funcionamento

* O componente carrega seu template HTML de um arquivo externo (`br-radio-horizontal.html`).
* Os atributos são lidos e aplicados aos elementos internos (`input` e `label`).
* É possível vincular eventos customizados ao componente via atributos HTML.
* As mudanças nos atributos do componente são observadas e refletidas imediatamente nos elementos internos.

## Geração de PDF

A geração do documento PDF é realizada a partir do conteúdo das seções marcadas com a classe `toPdf`. Para iniciar o processo de geração do PDF, o usuário deverá clicar no botão "Gerar Documento", conforme o exemplo abaixo:

```html
<button id="gerarDocumento">Gerar Documento</button>
```

### Função de Geração de PDF

O botão "Gerar Documento" dispara a função que varre o documento HTML, captura o conteúdo das seções com a classe `toPdf` e gera o arquivo PDF final.

#### Exemplo de Comportamento:

1. O usuário clica no botão "Gerar Documento".
2. O script de geração de PDF é acionado.
3. O PDF é gerado contendo apenas as seções com a classe `toPdf`.

## Exemplo Completo

```html
<!DOCTYPE html>
<html lang="pt-BR">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Exemplo de Documento</title>
</head>
<body>

  <!-- Seção 1: Incluída no PDF -->
  <section id="informacoes-pessoais" class="toPdf">
    <h1>Informações Pessoais</h1>
    <p>Nome: João da Silva</p>
    <p>Email: joao@email.com</p>
  </section>

  <!-- Seção 2: Não incluída no PDF -->
  <section id="detalhes-internos">
    <h1>Detalhes Internos</h1>
    <p>Informações internas do sistema.</p>
  </section>

  <!-- Seção 3: Incluída no PDF -->
  <section id="resumo-final" class="toPdf">
    <h1>Resumo Final</h1>
    <p>Este é o resumo final do relatório.</p>
  </section>

  <!-- Botão para gerar PDF -->
  <button id="gerarDocumento">Gerar Documento</button>

  <script>
    document.getElementById('gerarDocumento').addEventListener('click', function() {
      // Lógica de geração do PDF utilizando as seções com classe "toPdf"
    });
  </script>

</body>
</html>
```

## Considerações Finais

- Cada nova parte do HTML **deve estar encapsulada** em uma tag `<section>`.
- **IDs são obrigatórios** para cada tag `<section>`.
- Para incluir uma seção no PDF, **adicionar a classe `toPdf`**.
- A geração do PDF é disparada pelo clique no botão **"Gerar Documento"**.

Essa arquitetura garante que os novos HTMLs criados sigam um padrão bem estruturado, facilitando a manutenção e a geração de documentos PDF com conteúdo selecionado.
  • Serviços
    • Serviços de A a Z
    • Auditorias Fiscais
      • Consultar procedimentos fiscais
      • Responder notificações
      • Obter laudo fiscal
    • Cadastros
      • Cidadão (CPF/CAEPF)
      • Pessoa Jurídica (CNPJ)
      • Imóvel Rural
      • Obra de Construção Civil
      • Grandes Contribuintes
      • Registros Especiais
    • Certidões e Atestados
      • Consultar certidões emitidas
      • Emitir certidão
      • Anular certidão
      • Obter atestado fiscal
    • Comércio Exterior
    • Comunicações Eletrônicas
      • Compartilhar dados fiscais
      • Consultar correio eletrônico
      • Consultar editais e ADEs
      • Optar pelo DTE
    • Declarações e Escriturações
      • Consultar informações
      • Entregar escrituração
      • Entregar declaração
      • Entregar documentos de malha
      • Cancelar declaração
      • Obter cópias de declarações
      • Simular cálculos
    • Defesas e Recursos
    • Interpretação e Programas
      • Consultar normas da RFB
      • Consultar soluções da RFB
      • Formalizar consulta de NCM
      • Formalizar consulta da legislação
    • Isenções e Regimes Especiais
    • Processos Digitais
      • Consultar processos
      • Juntar documentos a processo
      • Validar e assinar documentos
    • Autorizações de Acesso (Procurações)
      • Cadastrar ou cancelar procuração
      • Restringir procuração
    • Regularização de Impostos
      • Consultar dívidas e pendências
      • Pagar impostos
      • Alterar pagamentos
      • Consultar pagamentos
      • Parcelar dívidas
      • Consultar parcelamentos
      • Fazer acordo de transação
      • Revisar débitos e pendências
    • Restituições e Compensações
      • Consultar restituição
      • Obter restituição
      • Compensar impostos
    • Conveniados e Parceiros
      • Estados e Municípios
      • Rede Arrecadadora
      • Casa da Moeda
      • Outras Entidades
    • Reforma Tributária
      • Aderir ao Piloto da Reforma Tributária da Contribuição sobre Bens e Serviços (CBS)
      • Emitir Nota Fiscal de Serviço Eletrônica (NFS-e)
      • Consultar Nota Fiscal de Serviço Eletrônica (NFS-e)
  • Assuntos
    • Notícias
      • Todas as notícias
      • Arrecadação e Cobrança
      • Cidadania Fiscal
      • Combate ao contrabando
      • Combate à corrupção
      • Combate à sonegação
      • Institucional
      • Serviços
      • Tributação
    • Agenda Tributária
    • Taxas de Juros
    • Aduana e Comércio Exterior
      • Atendimento via e-CAC
      • Classificação Fiscal de Mercadorias
      • Controle de Carga e Trânsito (CCT)
      • Como Importar ou Exportar
      • Compras Internacionais
      • Guia do Viajante
      • Exportação
      • Importação
      • Intervenientes no Comércio Exterior
      • Manuais Aduaneiros
      • Operador Econômico Autorizado (OEA)
      • Regimes Aduaneiros Especiais
      • Remessas Internacionais
      • Serviços - Aduana
      • Siscomex
      • Notícias Aduaneiras
    • Meu CPF
    • Meu Imposto de Renda
    • Minhas Empresas e Negócios
    • Construção Civil
    • Leilão e Doação
    • Orientações sobre Processos Digitais
    • Transação Tributária
    • Mais Orientações Tributárias
      • Fiscalização
      • Benefícios Fiscais
      • Cadastros
      • Cobranças e Intimações
      • Controles Fiscais Especiais
      • Declarações e Demonstrativos
      • Julgamento Administrativo
      • Pagamentos e Parcelamentos
      • Restituição, Ressarcimento, Reembolso e Compensação
      • Senhas de acesso
      • Sigilo Fiscal
      • Tributos
  • Acesso à Informação
    • Institucional
      • Estrutura
      • Quem é Quem
      • Cadeia de Valor
      • Competências
      • História da Receita Federal
      • Planejamento Estratégico
      • Relações Internacionais
    • Ações e Programas
      • Ações, Atividades, Obras, Programas e Projetos
      • Carta de Serviços
      • Governança
    • Participação Social
      • Audiências e Consultas Públicas
      • Conselhos e Órgãos Colegiados
      • Congressos
      • Ouvidoria
    • Auditorias
    • Convênios e Transferências
    • Receitas e Despesas
    • Licitações e Contratos
      • Avisos de Edital de Leilao
      • Contratos
      • Licitações
      • Relatórios
      • Anexos
    • Servidores
    • Serviço de Informação ao Cidadão (SIC)
      • Relatórios
      • Autoridade de Monitoramento
      • Como utilizar
    • Perguntas Frequentes
      • Benefícios Fiscais
      • Cadastros
      • Compartilhamento de Dados
      • Concursos Públicos
      • Construção Civil
      • Declaração de Serviços Médicos e de Saúde
      • Imposto de Renda
      • Isenção para compra de carro
      • Piloto da Reforma Tributária do Consumo
      • Programa Nacional de Apoio às Microempresas e Empresas de Pequeno Porte
      • Receita de Consenso
      • Serviços Digitais
      • Transação Tributária
    • Dados Abertos
    • Sanções Administrativas
      • Decisões de Processo Administrativo de Responsabilização
      • Notificações e Intimações em Processo Administrativo de Responsabilização
    • Privacidade e Proteção de Dados
      • Boas Práticas
      • Encarregado
      • Relatórios de Auditoria
      • Termo de Uso e Privacidade
    • Legislação e Jurisprudência
      • Legislação
      • Jurisprudência
    • Processos Seletivos
  • Canais de Atendimento
    • Digital
    • Portal e-CAC
    • Presencial
    • E-mail
    • Online (Chat)
    • Fale Conosco
    • Conveniados
    • Alfândegas
    • Imprensa
    • Ouvidoria
      • Quem Somos
  • Centrais de Conteúdo
    • Atas e Pautas
      • Comitê Gestor do Programa de Produtividade da Receita Federal
      • Turmas Recursais - Atas e Pautas de Julgamento
      • Câmaras Recursais – Atas e Pautas de Julgamento
      • Comitê de Governança Institucional
    • Áudios
    • Editais
      • Editais Eletrônicos
      • Transação Tributária
      • Notificações e Intimações em Processo Administrativo de Responsabilização (PAR)
    • Formulários
      • Cadastros
      • Certidões
      • Comércio Exterior
      • Declarações
      • Impostos e Dívidas
      • Regimes Especiais
      • Outros Processos
      • Modelos de Documentos
      • Reforma Tributária
    • Imagens
    • Planilhas
    • Programas e Aplicativos
      • Apps para Celular e Tablet
      • Programas de Declaração
      • Programas do SPED
      • Restituição e Compensação
      • Receitanet
      • Validador de arquivos
    • Publicações
      • Acordos de Cooperação
      • Apresentações
      • Boletins
      • Documentos Técnicos
      • Estudos Tributários e Aduaneiros
      • Folheteria
      • Guias e Roteiros
      • Manuais
      • Materiais Didáticos
      • Modelos de Documentos
      • Passo a Passos
      • Perguntas e Respostas
      • Relatórios
      • Representações Fiscais
      • Revistas
      • Termos
      • Trabalhos Acadêmicos
      • Web Stories
    • Redes Sociais
    • Vídeos
      • TV Receita Federal
      • Cidadania Fiscal
      • Histórias de Trabalho
      • Mais Vídeos
  • Composição
  • Portais Relacionados
    • Empresas e Negócios
    • ENAT
    • eSocial
    • ITR Orientações para celebração de convênios
    • Nota Fiscal de Serviço Eletrônica (NFS-e)
    • Nota Fiscal Eletrônica
    • Nota Fiscal Eletrônica do Ouro (NF-e Ouro)
    • Portal CNIR
    • Procuradoria da Fazenda (PGFN)
    • Registrato
    • Simples Nacional
    • Sinter
    • Siscomex
    • Sped
Redefinir Cookies
Redes sociais
  • Facebook
  • Instagram
  • Linkedin
  • Twitter
  • YouTube
Acesso àInformação
Todo o conteúdo deste site está publicado sob a licença Creative Commons Atribuição-SemDerivações 3.0 Não Adaptada.
Voltar ao topo da página
Fale Agora Refazer a busca