Ir para o conteúdo principal
WBC - GovBR-DS
Copiar página como Markdown para IA

Loading

Componente estável e recomendada para novos projetos.
Anatomia, uso, comportamento visual e recomendações conceituais são mantidos pelo Padrão Digital de Governo. Esta página documenta a implementação Web Components e sua API executável.

Visão Geral​

O componente br-loading é o indicador de carregamento e progresso do GovBR-DS, utilizado para informar visualmente e de forma acessível que uma operação assíncrona está em execução no sistema.

Para que serve​

  • Feedback de processamento: Alerta a pessoa usuária de que uma requisição, cálculo ou carregamento de dados está ocorrendo, evitando múltiplos cliques acidentais.
  • Modo spinner (indeterminado): Indicador circular contínuo para operações de duração imprevisível.
  • Modo progress (determinado): Indicador com percentual explícito (0 a 100%) para downloads, uploads ou tarefas com progresso mensurável, suportando ação de cancelamento.
  • Acessibilidade para tecnologias assistivas: Comunica o estado de carregamento através de regiões acessíveis (aria-live="polite" e papéis progressbar ou status).

Quando utilizar​

  • Utilize quando:
    • Uma operação assíncrona demorar mais de 300 a 500 milissegundos para responder.
    • Durante o envio de formulários volumosos, processamento de arquivos ou transição de telas pesadas.
  • Evite e prefira outro componente quando:
    • A resposta for quase instantânea (menos de 300ms), para evitar piscamento rápido de tela que cause desconforto visual.
    • A espera ocorrer dentro de um botão durante o clique (use a prop loading do próprio br-button).

Estrutura e Slots​

O br-loading oferece slots para personalização:

  • label: Slot para rótulo ou mensagem descritiva do carregamento (substitui a prop label).
  • cancel-button: Slot para botão customizado de cancelamento no modo progress.

Para a documentação completa de design, incluindo diretrizes de acessibilidade e especificações visuais, consulte o Design System do GovBR.

Exemplo(s)​

Desktop (100%)
Tablet - 768px
iPhone (iOS) - 390x844
Android - 360x800
PadrãoProgresso
Compartilhar URL
Ativar movimento reduzido
Mudar fundo
Abrir no StackBlitz
Mais opções
Tela cheia
Carregando preview…
HTML
Controles do componente
Console: logs, eventos e erros
Angular (Somente leitura)
React (Somente leitura)
Vue (Somente leitura)
Acessibilidade
Recolher controles e código
Desfazer alteração
Refazer alteração
Comparar alterações
Formatar código
Resetar código para o estado inicial
Escolher formato para copiar

Propriedades​

cancelLabel​

Atributocancel-label
DescriçãoDefine o texto do botão de cancelamento.
No modo spinner, esta prop não tem efeito.
Tipostring
Valor padrão'Cancelar'

cancelable​

Atributocancelable
DescriçãoDefine se o botão de cancelamento será exibido.
Ao pressionar o botão, o evento brLoadingCancel é emitido.
No modo spinner, esta prop não tem efeito.
Tipoboolean
Valor padrãofalse

compact​

Atributocompact
DescriçãoRemove o espaçamento externo e oculta visualmente o rótulo, mantendo-o
disponível para tecnologias assistivas. Use em áreas compactas, como
controles de paginação ou campos de formulário.
Tipoboolean
Valor padrãofalse

completion​

Atributocompletion
DescriçãoDefine o comportamento quando o progresso atinge 100. Valores inválidos usam persist.
No modo spinner, esta prop não tem efeito.
Tipo"hide" | "persist" | "reset"
Valor padrão'persist'

customId​

Atributocustom-id
DescriçãoIdentificador único do componente.
Quando omitido, um valor é gerado automaticamente.

> Padrão: valor único gerado por generateUniqueId().
Tipostring
Valor padrãogenerateUniqueId()

density​

Atributodensity
DescriçãoDensidade visual canônica. Quando informada, tem precedência sobre size.
Aceita small, medium ou large. Valores inválidos usam medium.
Tipo"large" | "medium" | "small"
Valor padrão---

label​

Atributolabel
DescriçãoDefine o rótulo exibido no modo spinner.
No modo progress, esta prop não tem efeito.
Tipostring
Valor padrão---

labelPosition​

Atributolabel-position
DescriçãoDefine a posição da label em relação ao loading. Valores inválidos usam bottom.
Tipo"bottom" | "left" | "right" | "top"
Valor padrão'bottom'

mode​

Atributomode
DescriçãoDefine o modo de exibição do componente. Valores inválidos usam spinner.
Tipo"progress" | "spinner"
Valor padrão'spinner'

size Componente mantido por compatibilidade; prefira a alternativa indicada na documentação.​

Atributosize
DepreciaçãoUse density.
DescriçãoDefine o tamanho visual nos modos spinner e progress.
Tipo"large" | "medium" | "small"
Valor padrão'medium'

speed​

Atributospeed
DescriçãoDefine a velocidade da animação/transição. Valores inválidos usam normal.
Tipo"fast" | "normal" | "slow"
Valor padrão'normal'

value​

Atributovalue
DescriçãoDefine o progresso no modo progress.
No modo spinner, esta prop não tem efeito.
Valores não numéricos usam 0; valores fora de 0–100 são limitados ao intervalo.
Tiponumber
Valor padrão0

Slots​

NomeDescrição
"cancel-button"Conteúdo customizado do botão de cancelar. Quando utilizado, a prop cancelLabel é ignorada.
"label"Rótulo customizado do loading. Quando utilizado, a prop label é ignorada.

Eventos​

EventoDescriçãoDepreciaçãoPropagação
brDidHideNotifica que o componente foi ocultado.---true
brDidShowNotifica que o componente foi exibido.---true
brIndeterminateStateChangeNotifica mudança do estado lógico no modo spinner.---true
brLoadingCancelNotifica clique no botão de cancelamento no modo progress. Este evento não altera o progresso automaticamente. A aplicação consumidora define a ação após o cancelamento (ex.: limpar ou ocultar).---true
brLoadingChangeNotifica mudança de progresso no modo progress.---true
brLoadingCompleteNotifica conclusão do progresso no modo progress.---true
brLoadingHideEvento canônico emitido quando o loading é ocultado.---true
brLoadingResetNotifica reinício do progresso no modo progress.---true
brLoadingShowEvento canônico emitido quando o loading é exibido.---true

Métodos​

complete​

DescriçãoDefine o progresso como concluído.
Assinaturacomplete() => Promise<{ value: number; }>
Parâmetros---

hide​

DescriçãoOculta o componente.
Assinaturahide() => Promise<{ visible: boolean; }>
Parâmetros---

incrementValue​

DescriçãoSoma um valor ao progresso atual.
AssinaturaincrementValue(step?: number) => Promise<{ value: number; }>
Parâmetrosstep: Incremento aplicado.

reset​

DescriçãoReinicia o progresso e exibe o componente.
Assinaturareset() => Promise<{ value: number; }>
Parâmetros---

setValue​

DescriçãoDefine o valor do progresso.
AssinaturasetValue(value: number) => Promise<{ value: number; }>
Parâmetrosvalue: Valor desejado.

show​

DescriçãoExibe o componente.
Assinaturashow() => Promise<{ visible: boolean; }>
Parâmetros---

CSS Shadow Parts​

NomeDescrição
"cancel-button"Botão de cancelamento no modo progress cancelável.
"container"Wrapper principal do loading.
"label-wrapper"Wrapper do rótulo no modo spinner.
"percentage"Texto de percentual no modo progress.
"svg"Elemento SVG principal do loading.
"wrapper"Wrapper do conteúdo do spinner/progress.

Eventos nativos​

Elemento HTML de referência​

O modo determinado referencia semanticamente <progress>, mas br-loading renderiza SVG/contêiner com role="progressbar". Não existe controle nativo interno equivalente.

Como ouvir os eventos​

const loading = document.querySelector('br-loading');

loading.addEventListener('brLoadingComplete', (event) => {
console.log(event.detail);
});

Eventos nativos suportados​

<progress> não define um evento próprio de mudança. Alterar value programaticamente não emite input nem change.

Eventos não aplicáveis ou não suportados​

EventoSituaçãoMotivoAlternativa
input / changeNão aplicávelIndicador não é controle editável.Observe a fonte da operação ou brLoadingChange.
eventos de formulárioNão aplicávelO indicador não participa de FormData.Mantenha estado no fluxo da aplicação.

Eventos customizados do componente​

brLoadingChange, brLoadingCancel, brLoadingComplete, brLoadingReset, brLoadingShow e brLoadingHide representam o ciclo próprio. Consulte a tabela gerada de eventos para payload e flags.

Valor e estado após o evento​

value é propriedade/estado, não evento. Consulte também mode, completion e cancelable no host.

Frameworks​

HTML usa addEventListener; React usa ref; Angular e Vue usam listeners para os eventos brLoading*. Não use onChange como substituto.

Acessibilidade​

O host expõe nome e estado por role="progressbar" e atributos ARIA. O modo indeterminado não anuncia valor numérico.

Evidência de teste​

_tests/loading.e2e.tsx cobre ARIA, valor e eventos próprios em Chromium headless. Não há evento nativo a comparar; três engines permanecem pendentes.

Dependências​

Usado por​

Depende de​

Gráfico​

Migração de <br-loading> (1.x → 2.x)​

O loading continua aceitando um valor de progresso, mas seus modos e tamanhos agora são propriedades explícitas.

Propriedades e controle​

API 1.xAPI 2.xAção na migração
—label, cancelable, labelPositionUse quando precisar de acessibilidade e controle de cancelamento.
mediumsize="medium"Substitua o booleano pelo tamanho explícito.
percentvalueRenomeie a propriedade.
progressmodeConverta para o modo de carregamento atual.

Para controlar o componente, prefira os métodos show, hide, reset, setValue e incrementValue. Acompanhe o ciclo de vida pelos eventos brLoading*.

Exemplo​

1.x:

<br-loading progress percent="40" medium></br-loading>

2.x:

<br-loading mode="progress" value="40" size="medium" label="Carregando"></br-loading>
Comece aquiComponentesQuickstartsSobre o projetoRepositório GitLabVersõesDiscordGovBR-DSFAQWikiRedefinir cookies