# WBC - GovBR-DS — 2.1.1 > Documentação completa e guias para a biblioteca de Web Components do GovBR-DS. Version: 2.1.1 This file contains all documentation content in a single document following the llmstxt.org standard. ## Código de Conduta ## Nosso compromisso Como pessoas participantes, colaboradoras e líderes, nós nos comprometemos a fazer com que a participação em nossa comunidade seja uma experiência livre de assédio para todas as pessoas, independentemente de idade, tamanho do corpo, deficiência aparente ou não aparente, etnia, características sexuais, identidade ou expressão de gênero, nível de experiência, educação, situação sócio-econômica, nacionalidade, aparência pessoal, raça, religião ou identidade e orientação sexuais. Comprometemo-nos a agir e interagir de maneiras que contribuam para uma comunidade aberta, acolhedora, diversificada, inclusiva e saudável. [Veja nosso Código de Conduta completo](https://gov.br/ds/wiki/comunidade/codigo-de-conduta/) --- ## Comece aqui Escolha sua tecnologia, instale o pacote correspondente e renderize o primeiro componente. As diretrizes visuais continuam no [Padrão Digital de Governo](https://www.gov.br/ds/); este site documenta a implementação. ## Escolha seu caminho | Tecnologia | Pacote | Melhor para | | --- | --- | --- | | HTML ou JavaScript | `@govbr-ds/webcomponents` | Uso direto, sem framework | | Angular | `@govbr-ds/webcomponents-angular` | Componentes standalone e Reactive Forms | | React | `@govbr-ds/webcomponents-react` | Props, callbacks, refs e SSR | | Vue | `@govbr-ds/webcomponents-vue` | Composition API e `v-model` | Consulte [Integração com frameworks](../frameworks/) para comparar wrappers, SSR e formulários. Para uso sem framework, veja o [guia de CDN](../guias-essenciais/cdn). ## Primeiro componente ```bash npm2yarn npm install @govbr-ds/core @govbr-ds/webcomponents ``` Importe os estilos uma vez na entrada da aplicação: ```css @import '@govbr-ds/core/dist/core.min.css'; ``` Use o componente: ```html Continuar ``` ## Próximos passos 1. Abra o [catálogo de componentes](../components/). 2. Edite um exemplo no Playground e abra-o no StackBlitz. 3. Clone um dos [quickstarts oficiais](../quickstarts). 4. Consulte a [documentação do componente](../components/) para propriedades, atributos, eventos, slots e CSS Parts. 5. Consulte os guias de [formulários](../frameworks/formularios), [eventos](../guias-essenciais/eventos) e [carregamento/CSP](../guias-tecnicos/carregamento-e-csp) quando a integração não se comportar como esperado. --- ## Compatibilidade Os pacotes publicados possuem contratos de compatibilidade diferentes. Use a linha correspondente ao pacote que será instalado: | Pacote | Compatibilidade específica | | --- | --- | | `@govbr-ds/webcomponents` | JavaScript/TypeScript com alvo ES2020, Custom Elements, Shadow DOM e navegadores no Baseline Widely Available. | | `@govbr-ds/webcomponents-angular` | Angular `>=14.0.0`, incluindo `@angular/common`, `@angular/core` e `@angular/forms`, além de `@govbr-ds/webcomponents` `>=2.0.0`. | | `@govbr-ds/webcomponents-react` | React `^18` ou `^19` e `react-dom` na mesma major, além de `@govbr-ds/webcomponents` `>=2.0.0`. | | `@govbr-ds/webcomponents-vue` | Vue `>=3.4.38 <4.0.0` e `@govbr-ds/webcomponents` `>=2.0.0`. | ## Navegadores e restrições Internet Explorer não é suportado. O alvo de navegadores é `baseline widely available`, conforme a configuração do Browserslist do projeto; a lista pode mudar entre releases. Os contratos críticos são executados em Chromium, Firefox e WebKit. Isso não representa suporte a uma versão específica que não tenha sido validada automaticamente. ## Como interpretar a matriz As versões acima são as faixas declaradas nas `peerDependencies` dos pacotes. Elas não substituem a compatibilidade do navegador do núcleo: todo wrapper renderiza os Web Components e, portanto, também depende do Baseline Widely Available. O pacote Angular oferece as entradas NgModule e `standalone`; o React oferece uma entrada específica para SSR; e o Vue requer Vue 3, não Vue 2. ## Referências oficiais - [Compatibilidade de versões do Angular](https://angular.dev/reference/versions) e [Angular Package Format](https://angular.dev/tools/libraries/angular-package-format). - [Versões e política de versionamento do React](https://react.dev/versions) e [política de versionamento](https://react.dev/community/versioning-policy). - [FAQ de compatibilidade do Vue](https://vuejs.org/about/faq.html) e [guia de início do Vue 3](https://vuejs.org/guide/quick-start.html). - [Baseline](https://web.dev/baseline/) e [consulta Baseline do Browserslist](https://github.com/browserslist/browserslist#by-baseline). Para detalhes de instalação, configuração e formulários, consulte a página da [integração com frameworks](../frameworks/) e o README do pacote correspondente. --- ## Avatar import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/avatar/overview.md"; import Props from "../../stencil-generated-docs/avatar/props.md"; import Parts from "../../stencil-generated-docs/avatar/parts.md"; import Dependencies from "../../stencil-generated-docs/avatar/dependencies.md"; import Migrate from "../../stencil-generated-docs/avatar/sections/migrate.md"; ## Exemplo(s) ### Padrão ### Status --- ## Breadcrumb item import Overview from "../../../stencil-generated-docs/breadcrumb/breadcrumb-item/overview.md"; import Props from "../../../stencil-generated-docs/breadcrumb/breadcrumb-item/props.md"; import Slots from "../../../stencil-generated-docs/breadcrumb/breadcrumb-item/slots.md"; import Events from "../../../stencil-generated-docs/breadcrumb/breadcrumb-item/events.md"; import Dependencies from "../../../stencil-generated-docs/breadcrumb/breadcrumb-item/dependencies.md"; --- ## crumb import Overview from "../../../stencil-generated-docs/breadcrumb/crumb/overview.md"; import Deprecation from "../../../stencil-generated-docs/breadcrumb/crumb/deprecation.md"; import Props from "../../../stencil-generated-docs/breadcrumb/crumb/props.md"; import Slots from "../../../stencil-generated-docs/breadcrumb/crumb/slots.md"; import Events from "../../../stencil-generated-docs/breadcrumb/crumb/events.md"; import Dependencies from "../../../stencil-generated-docs/breadcrumb/crumb/dependencies.md"; import NavigationMigration from "../../../stencil-generated-docs/breadcrumb/crumb/sections/navigation-migration.md"; --- ## Breadcrumb import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/breadcrumb/overview.md"; import Props from "../../stencil-generated-docs/breadcrumb/props.md"; import Slots from "../../stencil-generated-docs/breadcrumb/slots.md"; import Parts from "../../stencil-generated-docs/breadcrumb/parts.md"; import Dependencies from "../../stencil-generated-docs/breadcrumb/dependencies.md"; import Migrate from "../../stencil-generated-docs/breadcrumb/sections/migrate.md"; import NavigationMigration from "../../stencil-generated-docs/breadcrumb/sections/navigation-migration.md"; ## Exemplo(s) --- ## Button import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/button/overview.md"; import Props from "../../stencil-generated-docs/button/props.md"; import Slots from "../../stencil-generated-docs/button/slots.md"; import Parts from "../../stencil-generated-docs/button/parts.md"; import Dependencies from "../../stencil-generated-docs/button/dependencies.md"; import Migrate from "../../stencil-generated-docs/button/sections/migrate.md"; import NativeEvents from "../../stencil-generated-docs/button/sections/native-events.md"; ## Exemplo(s) --- ## Card import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/card/overview.md"; import Props from "../../stencil-generated-docs/card/props.md"; import Slots from "../../stencil-generated-docs/card/slots.md"; import Parts from "../../stencil-generated-docs/card/parts.md"; import Dependencies from "../../stencil-generated-docs/card/dependencies.md"; import Migrate from "../../stencil-generated-docs/card/sections/migrate.md"; ## Exemplo(s) --- ## carousel-page import Overview from "../../../stencil-generated-docs/carousel/carousel-page/overview.md"; import Props from "../../../stencil-generated-docs/carousel/carousel-page/props.md"; import Slots from "../../../stencil-generated-docs/carousel/carousel-page/slots.md"; import Methods from "../../../stencil-generated-docs/carousel/carousel-page/methods.md"; import Parts from "../../../stencil-generated-docs/carousel/carousel-page/parts.md"; import Dependencies from "../../../stencil-generated-docs/carousel/carousel-page/dependencies.md"; --- ## Carousel import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/carousel/overview.md"; import Props from "../../stencil-generated-docs/carousel/props.md"; import Slots from "../../stencil-generated-docs/carousel/slots.md"; import Events from "../../stencil-generated-docs/carousel/events.md"; import Methods from "../../stencil-generated-docs/carousel/methods.md"; import Parts from "../../stencil-generated-docs/carousel/parts.md"; import Dependencies from "../../stencil-generated-docs/carousel/dependencies.md"; ## Exemplo(s) --- ## Checkbox import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/checkbox/overview.md"; import Props from "../../stencil-generated-docs/checkbox/props.md"; import Slots from "../../stencil-generated-docs/checkbox/slots.md"; import Events from "../../stencil-generated-docs/checkbox/events.md"; import Methods from "../../stencil-generated-docs/checkbox/methods.md"; import Dependencies from "../../stencil-generated-docs/checkbox/dependencies.md"; import Migrate from "../../stencil-generated-docs/checkbox/sections/migrate.md"; import Validation from "../../stencil-generated-docs/checkbox/sections/validation.md"; import Accessibility from "../../stencil-generated-docs/checkbox/sections/accessibility.md"; import NativeEvents from "../../stencil-generated-docs/checkbox/sections/native-events.md"; ## Exemplo(s) --- ## Checkbox-group import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/checkbox-group/overview.md"; import Props from "../../stencil-generated-docs/checkbox-group/props.md"; import Slots from "../../stencil-generated-docs/checkbox-group/slots.md"; import Dependencies from "../../stencil-generated-docs/checkbox-group/dependencies.md"; ## Exemplo(s) --- ## Checkgroup import Playground from "@site/src/components/Playground"; import Deprecation from "../../stencil-generated-docs/checkgroup/deprecation.md"; import Props from "../../stencil-generated-docs/checkgroup/props.md"; import Slots from "../../stencil-generated-docs/checkgroup/slots.md"; import Dependencies from "../../stencil-generated-docs/checkgroup/dependencies.md"; import NativeEvents from "../../stencil-generated-docs/checkgroup/sections/native-events.md"; ## Exemplo(s) --- ## Collapse import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/collapse/overview.md"; import Props from "../../stencil-generated-docs/collapse/props.md"; import Slots from "../../stencil-generated-docs/collapse/slots.md"; import Events from "../../stencil-generated-docs/collapse/events.md"; import Methods from "../../stencil-generated-docs/collapse/methods.md"; import Parts from "../../stencil-generated-docs/collapse/parts.md"; import Dependencies from "../../stencil-generated-docs/collapse/dependencies.md"; import Migrate from "../../stencil-generated-docs/collapse/sections/migrate.md"; import NativeEvents from "../../stencil-generated-docs/collapse/sections/native-events.md"; ## Exemplo(s) --- ## cookiebar-cookie import Overview from "../../../stencil-generated-docs/cookiebar/cookiebar-cookie/overview.md"; import Props from "../../../stencil-generated-docs/cookiebar/cookiebar-cookie/props.md"; import Slots from "../../../stencil-generated-docs/cookiebar/cookiebar-cookie/slots.md"; import Events from "../../../stencil-generated-docs/cookiebar/cookiebar-cookie/events.md"; import Parts from "../../../stencil-generated-docs/cookiebar/cookiebar-cookie/parts.md"; import Dependencies from "../../../stencil-generated-docs/cookiebar/cookiebar-cookie/dependencies.md"; --- ## cookiebar-group import Overview from "../../../stencil-generated-docs/cookiebar/cookiebar-group/overview.md"; import Props from "../../../stencil-generated-docs/cookiebar/cookiebar-group/props.md"; import Slots from "../../../stencil-generated-docs/cookiebar/cookiebar-group/slots.md"; import Events from "../../../stencil-generated-docs/cookiebar/cookiebar-group/events.md"; import Methods from "../../../stencil-generated-docs/cookiebar/cookiebar-group/methods.md"; import Parts from "../../../stencil-generated-docs/cookiebar/cookiebar-group/parts.md"; import Dependencies from "../../../stencil-generated-docs/cookiebar/cookiebar-group/dependencies.md"; --- ## cookiebar-header import Overview from "../../../stencil-generated-docs/cookiebar/cookiebar-header/overview.md"; import Props from "../../../stencil-generated-docs/cookiebar/cookiebar-header/props.md"; import Slots from "../../../stencil-generated-docs/cookiebar/cookiebar-header/slots.md"; import Parts from "../../../stencil-generated-docs/cookiebar/cookiebar-header/parts.md"; import Dependencies from "../../../stencil-generated-docs/cookiebar/cookiebar-header/dependencies.md"; --- ## cookiebar-link import Overview from "../../../stencil-generated-docs/cookiebar/cookiebar-link/overview.md"; import Props from "../../../stencil-generated-docs/cookiebar/cookiebar-link/props.md"; import Parts from "../../../stencil-generated-docs/cookiebar/cookiebar-link/parts.md"; import Dependencies from "../../../stencil-generated-docs/cookiebar/cookiebar-link/dependencies.md"; import NavigationMigration from "../../../stencil-generated-docs/cookiebar/cookiebar-link/sections/navigation-migration.md"; --- ## cookiebar-note import Overview from "../../../stencil-generated-docs/cookiebar/cookiebar-note/overview.md"; import Props from "../../../stencil-generated-docs/cookiebar/cookiebar-note/props.md"; import Parts from "../../../stencil-generated-docs/cookiebar/cookiebar-note/parts.md"; import Dependencies from "../../../stencil-generated-docs/cookiebar/cookiebar-note/dependencies.md"; --- ## cookiebar-note-group import Overview from "../../../stencil-generated-docs/cookiebar/cookiebar-note-group/overview.md"; import Props from "../../../stencil-generated-docs/cookiebar/cookiebar-note-group/props.md"; import Slots from "../../../stencil-generated-docs/cookiebar/cookiebar-note-group/slots.md"; import Events from "../../../stencil-generated-docs/cookiebar/cookiebar-note-group/events.md"; import Parts from "../../../stencil-generated-docs/cookiebar/cookiebar-note-group/parts.md"; import Dependencies from "../../../stencil-generated-docs/cookiebar/cookiebar-note-group/dependencies.md"; --- ## Cookiebar import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/cookiebar/overview.md"; import Props from "../../stencil-generated-docs/cookiebar/props.md"; import Slots from "../../stencil-generated-docs/cookiebar/slots.md"; import Events from "../../stencil-generated-docs/cookiebar/events.md"; import Methods from "../../stencil-generated-docs/cookiebar/methods.md"; import Parts from "../../stencil-generated-docs/cookiebar/parts.md"; import Dependencies from "../../stencil-generated-docs/cookiebar/dependencies.md"; import Migrate from "../../stencil-generated-docs/cookiebar/sections/migrate.md"; ## Exemplo(s) Padrão em que o usuário pode configurar as preferências de cookies individualmente. ## Fluxo, camada e modalidade O aviso simples permanece como barra `fixed`, fora do fluxo da página. Com `scrim` ou no modo `open`, o container usa `` modal e a top layer quando disponível. A máscara ocupa a subcamada local 0 e o painel a 1, garantindo que cliques e foco alcancem sempre os controles do painel. Sem `showModal()`, o cookiebar usa a camada bloqueadora 4. Nesse fallback CSS, mantenha somente um bloqueador legado ativo por vez. --- ## DatePicker import Overview from "../../../stencil-generated-docs/datetime-picker/date-picker/overview.md"; import Props from "../../../stencil-generated-docs/datetime-picker/date-picker/props.md"; import Events from "../../../stencil-generated-docs/datetime-picker/date-picker/events.md"; import Parts from "../../../stencil-generated-docs/datetime-picker/date-picker/parts.md"; import Dependencies from "../../../stencil-generated-docs/datetime-picker/date-picker/dependencies.md"; ## Exemplo(s) --- ## DatetimeInput import Overview from "../../../stencil-generated-docs/datetime-picker/datetime-input/overview.md"; import Props from "../../../stencil-generated-docs/datetime-picker/datetime-input/props.md"; import Events from "../../../stencil-generated-docs/datetime-picker/datetime-input/events.md"; import Parts from "../../../stencil-generated-docs/datetime-picker/datetime-input/parts.md"; import Dependencies from "../../../stencil-generated-docs/datetime-picker/datetime-input/dependencies.md"; ## Exemplo(s) --- ## Datetime picker import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/datetime-picker/overview.md"; import Props from "../../stencil-generated-docs/datetime-picker/props.md"; import Events from "../../stencil-generated-docs/datetime-picker/events.md"; import Methods from "../../stencil-generated-docs/datetime-picker/methods.md"; import Parts from "../../stencil-generated-docs/datetime-picker/parts.md"; import Dependencies from "../../stencil-generated-docs/datetime-picker/dependencies.md"; import Validation from "../../stencil-generated-docs/datetime-picker/sections/validation.md"; import Accessibility from "../../stencil-generated-docs/datetime-picker/sections/accessibility.md"; import NativeEvents from "../../stencil-generated-docs/datetime-picker/sections/native-events.md"; ## Exemplo(s) --- ## TimePicker import Overview from "../../../stencil-generated-docs/datetime-picker/time-picker/overview.md"; import Props from "../../../stencil-generated-docs/datetime-picker/time-picker/props.md"; import Events from "../../../stencil-generated-docs/datetime-picker/time-picker/events.md"; import Parts from "../../../stencil-generated-docs/datetime-picker/time-picker/parts.md"; import Dependencies from "../../../stencil-generated-docs/datetime-picker/time-picker/dependencies.md"; ## Exemplo(s) --- ## Divider import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/divider/overview.md"; import Props from "../../stencil-generated-docs/divider/props.md"; import Slots from "../../stencil-generated-docs/divider/slots.md"; import Parts from "../../stencil-generated-docs/divider/parts.md"; import Dependencies from "../../stencil-generated-docs/divider/dependencies.md"; import Migrate from "../../stencil-generated-docs/divider/sections/migrate.md"; ## Exemplo(s) --- ## Dropdown import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/dropdown/overview.md"; import Props from "../../stencil-generated-docs/dropdown/props.md"; import Slots from "../../stencil-generated-docs/dropdown/slots.md"; import Events from "../../stencil-generated-docs/dropdown/events.md"; import Methods from "../../stencil-generated-docs/dropdown/methods.md"; import Parts from "../../stencil-generated-docs/dropdown/parts.md"; import Dependencies from "../../stencil-generated-docs/dropdown/dependencies.md"; ## Exemplo(s) ## Fluxo e sobreposição O painel do dropdown é uma superfície ancorada fora do fluxo (`position: absolute`), portanto abrir ou fechar o componente não reserva espaço nem desloca o conteúdo seguinte. No fallback CSS ele usa a camada flutuante 1; o valor público `targetZIndex` continua podendo sobrescrever essa camada. Ao abrir um bloqueador externo — scrim, cookiebar modal ou menu sobreposto — o dropdown é fechado. Se estiver contido nesse bloqueador, ele permanece disponível e é posicionado dentro do respectivo contexto de pintura. --- ## footer-category import Overview from "../../../stencil-generated-docs/footer/footer-category/overview.md"; import Props from "../../../stencil-generated-docs/footer/footer-category/props.md"; import Slots from "../../../stencil-generated-docs/footer/footer-category/slots.md"; import Dependencies from "../../../stencil-generated-docs/footer/footer-category/dependencies.md"; --- ## footer-item import Overview from "../../../stencil-generated-docs/footer/footer-item/overview.md"; import Props from "../../../stencil-generated-docs/footer/footer-item/props.md"; import Slots from "../../../stencil-generated-docs/footer/footer-item/slots.md"; import Dependencies from "../../../stencil-generated-docs/footer/footer-item/dependencies.md"; import NavigationMigration from "../../../stencil-generated-docs/footer/footer-item/sections/navigation-migration.md"; --- ## footer-legal import Overview from "../../../stencil-generated-docs/footer/footer-legal/overview.md"; import Props from "../../../stencil-generated-docs/footer/footer-legal/props.md"; import Slots from "../../../stencil-generated-docs/footer/footer-legal/slots.md"; import Parts from "../../../stencil-generated-docs/footer/footer-legal/parts.md"; import Dependencies from "../../../stencil-generated-docs/footer/footer-legal/dependencies.md"; --- ## footer-logo import Overview from "../../../stencil-generated-docs/footer/footer-logo/overview.md"; import Props from "../../../stencil-generated-docs/footer/footer-logo/props.md"; import Parts from "../../../stencil-generated-docs/footer/footer-logo/parts.md"; import Dependencies from "../../../stencil-generated-docs/footer/footer-logo/dependencies.md"; import NavigationMigration from "../../../stencil-generated-docs/footer/footer-logo/sections/navigation-migration.md"; --- ## footer-social import Overview from "../../../stencil-generated-docs/footer/footer-social/overview.md"; import Props from "../../../stencil-generated-docs/footer/footer-social/props.md"; import Dependencies from "../../../stencil-generated-docs/footer/footer-social/dependencies.md"; import NavigationMigration from "../../../stencil-generated-docs/footer/footer-social/sections/navigation-migration.md"; --- ## Footer import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/footer/overview.md"; import Props from "../../stencil-generated-docs/footer/props.md"; import Slots from "../../stencil-generated-docs/footer/slots.md"; import Parts from "../../stencil-generated-docs/footer/parts.md"; import Dependencies from "../../stencil-generated-docs/footer/dependencies.md"; import Migrate from "../../stencil-generated-docs/footer/sections/migrate.md"; ## Exemplo(s) --- ## header-function import Overview from "../../../stencil-generated-docs/header/header-function/overview.md"; import Props from "../../../stencil-generated-docs/header/header-function/props.md"; import Slots from "../../../stencil-generated-docs/header/header-function/slots.md"; import Dependencies from "../../../stencil-generated-docs/header/header-function/dependencies.md"; import NavigationMigration from "../../../stencil-generated-docs/header/header-function/sections/navigation-migration.md"; --- ## header-link import Overview from "../../../stencil-generated-docs/header/header-link/overview.md"; import Props from "../../../stencil-generated-docs/header/header-link/props.md"; import Slots from "../../../stencil-generated-docs/header/header-link/slots.md"; import Dependencies from "../../../stencil-generated-docs/header/header-link/dependencies.md"; import NavigationMigration from "../../../stencil-generated-docs/header/header-link/sections/navigation-migration.md"; --- ## header-list import Overview from "../../../stencil-generated-docs/header/header-list/overview.md"; import Props from "../../../stencil-generated-docs/header/header-list/props.md"; import Slots from "../../../stencil-generated-docs/header/header-list/slots.md"; import Events from "../../../stencil-generated-docs/header/header-list/events.md"; import Methods from "../../../stencil-generated-docs/header/header-list/methods.md"; import Dependencies from "../../../stencil-generated-docs/header/header-list/dependencies.md"; --- ## header-logo import Overview from "../../../stencil-generated-docs/header/header-logo/overview.md"; import Props from "../../../stencil-generated-docs/header/header-logo/props.md"; import Slots from "../../../stencil-generated-docs/header/header-logo/slots.md"; import Parts from "../../../stencil-generated-docs/header/header-logo/parts.md"; import Dependencies from "../../../stencil-generated-docs/header/header-logo/dependencies.md"; import NavigationMigration from "../../../stencil-generated-docs/header/header-logo/sections/navigation-migration.md"; --- ## Header import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/header/overview.md"; import Props from "../../stencil-generated-docs/header/props.md"; import Slots from "../../stencil-generated-docs/header/slots.md"; import Events from "../../stencil-generated-docs/header/events.md"; import Methods from "../../stencil-generated-docs/header/methods.md"; import Parts from "../../stencil-generated-docs/header/parts.md"; import Dependencies from "../../stencil-generated-docs/header/dependencies.md"; import Migrate from "../../stencil-generated-docs/header/sections/migrate.md"; import NavigationMigration from "../../stencil-generated-docs/header/sections/navigation-migration.md"; ## Exemplo(s) --- ## Icon import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/icon/overview.md"; import Props from "../../stencil-generated-docs/icon/props.md"; import Parts from "../../stencil-generated-docs/icon/parts.md"; import Dependencies from "../../stencil-generated-docs/icon/dependencies.md"; import Migrate from "../../stencil-generated-docs/icon/sections/migrate.md"; import Iconify from "../../stencil-generated-docs/icon/sections/iconify.md"; ## Exemplo(s) ### Imagem ou URL (`src`) ### SVG inline (`svg`) ### Slot padrão --- ## Componentes import components from '@site/src/data/components'; import { ComponentCatalog } from '@site/src/components/ComponentCard'; # Componentes Explore os componentes do Gov.br Design System disponíveis em Web Components. Cada componente foi construído seguindo as diretrizes de design, oferecendo acessibilidade e flexibilidade. --- ## Input import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/input/overview.md"; import Props from "../../stencil-generated-docs/input/props.md"; import Slots from "../../stencil-generated-docs/input/slots.md"; import Events from "../../stencil-generated-docs/input/events.md"; import Methods from "../../stencil-generated-docs/input/methods.md"; import Parts from "../../stencil-generated-docs/input/parts.md"; import Dependencies from "../../stencil-generated-docs/input/dependencies.md"; import Migrate from "../../stencil-generated-docs/input/sections/migrate.md"; import Validation from "../../stencil-generated-docs/input/sections/validation.md"; import Accessibility from "../../stencil-generated-docs/input/sections/accessibility.md"; import NativeEvents from "../../stencil-generated-docs/input/sections/native-events.md"; import RelatedDocs from "../../stencil-generated-docs/input/sections/related-docs.md"; ## Exemplo(s) --- ## Item import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/item/overview.md"; import Props from "../../stencil-generated-docs/item/props.md"; import Slots from "../../stencil-generated-docs/item/slots.md"; import Events from "../../stencil-generated-docs/item/events.md"; import Methods from "../../stencil-generated-docs/item/methods.md"; import Parts from "../../stencil-generated-docs/item/parts.md"; import Dependencies from "../../stencil-generated-docs/item/dependencies.md"; import Migrate from "../../stencil-generated-docs/item/sections/migrate.md"; import NavigationMigration from "../../stencil-generated-docs/item/sections/navigation-migration.md"; ## Exemplo(s) --- ## Link import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/link/overview.md"; import Props from "../../stencil-generated-docs/link/props.md"; import Events from "../../stencil-generated-docs/link/events.md"; import Dependencies from "../../stencil-generated-docs/link/dependencies.md"; import NativeEvents from "../../stencil-generated-docs/link/sections/native-events.md"; import NavigationMigration from "../../stencil-generated-docs/link/sections/navigation-migration.md"; ## Exemplo(s) --- ## List import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/list/overview.md"; import Props from "../../stencil-generated-docs/list/props.md"; import Slots from "../../stencil-generated-docs/list/slots.md"; import Parts from "../../stencil-generated-docs/list/parts.md"; import Dependencies from "../../stencil-generated-docs/list/dependencies.md"; import Migrate from "../../stencil-generated-docs/list/sections/migrate.md"; ## Exemplo(s) Para seções extensas que permanecem no DOM, consulte o guia de [`content-visibility`](/docs/next/guias-tecnicos/content-visibility). A propriedade reduz layout e pintura fora da viewport, mas não virtualiza os itens fornecidos por slot. --- ## Loading import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/loading/overview.md"; import Props from "../../stencil-generated-docs/loading/props.md"; import Slots from "../../stencil-generated-docs/loading/slots.md"; import Events from "../../stencil-generated-docs/loading/events.md"; import Methods from "../../stencil-generated-docs/loading/methods.md"; import Parts from "../../stencil-generated-docs/loading/parts.md"; import Dependencies from "../../stencil-generated-docs/loading/dependencies.md"; import Migrate from "../../stencil-generated-docs/loading/sections/migrate.md"; import NativeEvents from "../../stencil-generated-docs/loading/sections/native-events.md"; ## Exemplo(s) --- ## Magic button import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/magic-button/overview.md"; import Props from "../../stencil-generated-docs/magic-button/props.md"; import Slots from "../../stencil-generated-docs/magic-button/slots.md"; import Parts from "../../stencil-generated-docs/magic-button/parts.md"; import Dependencies from "../../stencil-generated-docs/magic-button/dependencies.md"; import Migrate from "../../stencil-generated-docs/magic-button/sections/migrate.md"; ## Exemplo(s) --- ## Menu import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/menu/overview.md"; import Props from "../../stencil-generated-docs/menu/props.md"; import Slots from "../../stencil-generated-docs/menu/slots.md"; import Events from "../../stencil-generated-docs/menu/events.md"; import Methods from "../../stencil-generated-docs/menu/methods.md"; import Parts from "../../stencil-generated-docs/menu/parts.md"; import Dependencies from "../../stencil-generated-docs/menu/dependencies.md"; import Migrate from "../../stencil-generated-docs/menu/sections/migrate.md"; ## Exemplo(s) ### Padrão ### Contextual ### Agrupado por Divider ### Agrupado por Expansão ### Agrupado por Label ## Estado aberto e associação com header `isOpen` é a fonte de verdade pública do menu. Interação, `open()`, `close()` e `toggle()` atualizam essa propriedade e emitem `brMenuOpenChange` uma vez, com `detail.open` e `detail.sourceId`. Escrita com o mesmo valor não emite evento. Ao usar um trigger no `br-header`, defina `data-target` com o `id` ou `customId` do menu. Isso isola páginas com vários headers e menus e mantém `aria-expanded` sincronizado somente no trigger associado. ```html ``` ## Fluxo, camada e modalidade O menu sobreposto usa um `` modal e a top layer quando `showModal()` está disponível. O painel e a máscara compartilham o mesmo contexto: máscara na subcamada local 0 e painel na 1. Sem suporte nativo, o conjunto permanece `fixed` na camada de navegação temporária 3. Os modos `push`, `fixed` e `contextual` não entram na top layer e mantêm o comportamento local ou persistente. No fallback CSS, mantenha apenas um bloqueador legado ativo por vez. No modo `fixed`, o painel usa `20rem` como largura padrão, limitada à viewport. Defina `--menu-fixed-width` no `br-menu` para personalizar esse valor. --- ## menu-header import Overview from "../../../stencil-generated-docs/menu/menu-header/overview.md"; import Props from "../../../stencil-generated-docs/menu/menu-header/props.md"; import Slots from "../../../stencil-generated-docs/menu/menu-header/slots.md"; import Events from "../../../stencil-generated-docs/menu/menu-header/events.md"; import Parts from "../../../stencil-generated-docs/menu/menu-header/parts.md"; import Dependencies from "../../../stencil-generated-docs/menu/menu-header/dependencies.md"; --- ## menu-info import Overview from "../../../stencil-generated-docs/menu/menu-info/overview.md"; import Props from "../../../stencil-generated-docs/menu/menu-info/props.md"; import Slots from "../../../stencil-generated-docs/menu/menu-info/slots.md"; import Dependencies from "../../../stencil-generated-docs/menu/menu-info/dependencies.md"; --- ## menu-item import Overview from "../../../stencil-generated-docs/menu/menu-item/overview.md"; import Props from "../../../stencil-generated-docs/menu/menu-item/props.md"; import Slots from "../../../stencil-generated-docs/menu/menu-item/slots.md"; import Events from "../../../stencil-generated-docs/menu/menu-item/events.md"; import Parts from "../../../stencil-generated-docs/menu/menu-item/parts.md"; import Dependencies from "../../../stencil-generated-docs/menu/menu-item/dependencies.md"; import NavigationMigration from "../../../stencil-generated-docs/menu/menu-item/sections/navigation-migration.md"; --- ## menu-link import Overview from "../../../stencil-generated-docs/menu/menu-link/overview.md"; import Props from "../../../stencil-generated-docs/menu/menu-link/props.md"; import Slots from "../../../stencil-generated-docs/menu/menu-link/slots.md"; import Events from "../../../stencil-generated-docs/menu/menu-link/events.md"; import Parts from "../../../stencil-generated-docs/menu/menu-link/parts.md"; import Dependencies from "../../../stencil-generated-docs/menu/menu-link/dependencies.md"; import NavigationMigration from "../../../stencil-generated-docs/menu/menu-link/sections/navigation-migration.md"; --- ## menu-list import Overview from "../../../stencil-generated-docs/menu/menu-list/overview.md"; import Props from "../../../stencil-generated-docs/menu/menu-list/props.md"; import Slots from "../../../stencil-generated-docs/menu/menu-list/slots.md"; import Events from "../../../stencil-generated-docs/menu/menu-list/events.md"; import Parts from "../../../stencil-generated-docs/menu/menu-list/parts.md"; import Dependencies from "../../../stencil-generated-docs/menu/menu-list/dependencies.md"; --- ## menu-logo import Overview from "../../../stencil-generated-docs/menu/menu-logo/overview.md"; import Props from "../../../stencil-generated-docs/menu/menu-logo/props.md"; import Slots from "../../../stencil-generated-docs/menu/menu-logo/slots.md"; import Parts from "../../../stencil-generated-docs/menu/menu-logo/parts.md"; import Dependencies from "../../../stencil-generated-docs/menu/menu-logo/dependencies.md"; --- ## menu-social import Overview from "../../../stencil-generated-docs/menu/menu-social/overview.md"; import Props from "../../../stencil-generated-docs/menu/menu-social/props.md"; import Slots from "../../../stencil-generated-docs/menu/menu-social/slots.md"; import Events from "../../../stencil-generated-docs/menu/menu-social/events.md"; import Dependencies from "../../../stencil-generated-docs/menu/menu-social/dependencies.md"; import NavigationMigration from "../../../stencil-generated-docs/menu/menu-social/sections/navigation-migration.md"; --- ## Message import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/message/overview.md"; import Props from "../../stencil-generated-docs/message/props.md"; import Slots from "../../stencil-generated-docs/message/slots.md"; import Events from "../../stencil-generated-docs/message/events.md"; import Parts from "../../stencil-generated-docs/message/parts.md"; import Dependencies from "../../stencil-generated-docs/message/dependencies.md"; import Migrate from "../../stencil-generated-docs/message/sections/migrate.md"; ## Exemplo(s) --- ## Modal import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/modal/overview.md"; import Props from "../../stencil-generated-docs/modal/props.md"; import Slots from "../../stencil-generated-docs/modal/slots.md"; import Events from "../../stencil-generated-docs/modal/events.md"; import Methods from "../../stencil-generated-docs/modal/methods.md"; import Parts from "../../stencil-generated-docs/modal/parts.md"; import Dependencies from "../../stencil-generated-docs/modal/dependencies.md"; import Migrate from "../../stencil-generated-docs/modal/sections/migrate.md"; import NativeEvents from "../../stencil-generated-docs/modal/sections/native-events.md"; ## Exemplo(s) ## Composição com scrim O modal continua sendo o conteúdo do `br-scrim` e preserva `open()`, `showModal()`, `close()`, eventos, foco e slots. Quando o scrim fullscreen usa ``, o conjunto entra na top layer; em ambientes sem `showModal()`, usa a camada bloqueadora 4 e o gerenciamento de foco legado. A ordem de abertura define a precedência entre diálogos nativos: o último bloqueador aberto fica ativo. No fallback CSS, mantenha apenas um bloqueador legado ativo por vez. --- ## Notification import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/notification/overview.md"; import Props from "../../stencil-generated-docs/notification/props.md"; import Slots from "../../stencil-generated-docs/notification/slots.md"; import Events from "../../stencil-generated-docs/notification/events.md"; import Methods from "../../stencil-generated-docs/notification/methods.md"; import Parts from "../../stencil-generated-docs/notification/parts.md"; import Dependencies from "../../stencil-generated-docs/notification/dependencies.md"; import Migrate from "../../stencil-generated-docs/notification/sections/migrate.md"; ## Exemplo(s) --- ## notification-body import Overview from "../../../stencil-generated-docs/notification/notification-body/overview.md"; import Props from "../../../stencil-generated-docs/notification/notification-body/props.md"; import Slots from "../../../stencil-generated-docs/notification/notification-body/slots.md"; import Dependencies from "../../../stencil-generated-docs/notification/notification-body/dependencies.md"; --- ## notification-header import Overview from "../../../stencil-generated-docs/notification/notification-header/overview.md"; import Props from "../../../stencil-generated-docs/notification/notification-header/props.md"; import Slots from "../../../stencil-generated-docs/notification/notification-header/slots.md"; import Events from "../../../stencil-generated-docs/notification/notification-header/events.md"; import Dependencies from "../../../stencil-generated-docs/notification/notification-header/dependencies.md"; --- ## notification-item import Overview from "../../../stencil-generated-docs/notification/notification-item/overview.md"; import Props from "../../../stencil-generated-docs/notification/notification-item/props.md"; import Slots from "../../../stencil-generated-docs/notification/notification-item/slots.md"; import Events from "../../../stencil-generated-docs/notification/notification-item/events.md"; import Methods from "../../../stencil-generated-docs/notification/notification-item/methods.md"; import Dependencies from "../../../stencil-generated-docs/notification/notification-item/dependencies.md"; --- ## Pagination import Playground from '@site/src/components/Playground'; import Overview from '../../stencil-generated-docs/pagination/overview.md'; import Props from '../../stencil-generated-docs/pagination/props.md'; import Slots from '../../stencil-generated-docs/pagination/slots.md'; import Events from '../../stencil-generated-docs/pagination/events.md'; import Methods from '../../stencil-generated-docs/pagination/methods.md'; import Parts from '../../stencil-generated-docs/pagination/parts.md'; import Dependencies from '../../stencil-generated-docs/pagination/dependencies.md'; import RelatedDocs from '../../stencil-generated-docs/pagination/sections/related-docs.md'; ## Exemplos ### Básico ### Contextual ### Densidade ### Estado loading ## Dados remotos Use `brPaginationPageChange` e `brPaginationPerPageChange` para iniciar a consulta. Enquanto ela estiver pendente, defina `loading`; os controles ficam desabilitados, `aria-busy="true"` é aplicado e o slot `loading` pode substituir o indicador padrão. Para confirmar a navegação somente depois da resposta, use `controlled`. Nesse modo, o evento contém a página solicitada, mas `current` permanece inalterado até a aplicação atribuir o novo valor: ```js pagination.addEventListener('brPaginationPageChange', async ({ detail }) => { pagination.loading = true; try { const result = await pageService(detail.page); pagination.current = result.page; } finally { pagination.loading = false; } }); ``` --- ## Radio import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/radio/overview.md"; import Props from "../../stencil-generated-docs/radio/props.md"; import Slots from "../../stencil-generated-docs/radio/slots.md"; import Events from "../../stencil-generated-docs/radio/events.md"; import Methods from "../../stencil-generated-docs/radio/methods.md"; import Parts from "../../stencil-generated-docs/radio/parts.md"; import Dependencies from "../../stencil-generated-docs/radio/dependencies.md"; import Validation from "../../stencil-generated-docs/radio/sections/validation.md"; import Accessibility from "../../stencil-generated-docs/radio/sections/accessibility.md"; import NativeEvents from "../../stencil-generated-docs/radio/sections/native-events.md"; ## Exemplo(s) --- ## Radio Group import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/radio-group/overview.md"; import Props from "../../stencil-generated-docs/radio-group/props.md"; import Slots from "../../stencil-generated-docs/radio-group/slots.md"; import Events from "../../stencil-generated-docs/radio-group/events.md"; import Methods from "../../stencil-generated-docs/radio-group/methods.md"; import Parts from "../../stencil-generated-docs/radio-group/parts.md"; import Dependencies from "../../stencil-generated-docs/radio-group/dependencies.md"; import Validation from "../../stencil-generated-docs/radio-group/sections/validation.md"; import Accessibility from "../../stencil-generated-docs/radio-group/sections/accessibility.md"; import NativeEvents from "../../stencil-generated-docs/radio-group/sections/native-events.md"; import NativeAttributes from "../../stencil-generated-docs/radio-group/sections/native-attributes.md"; ## Exemplo(s) --- ## Scrim import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/scrim/overview.md"; import Props from "../../stencil-generated-docs/scrim/props.md"; import Slots from "../../stencil-generated-docs/scrim/slots.md"; import Events from "../../stencil-generated-docs/scrim/events.md"; import Methods from "../../stencil-generated-docs/scrim/methods.md"; import Dependencies from "../../stencil-generated-docs/scrim/dependencies.md"; import Migrate from "../../stencil-generated-docs/scrim/sections/migrate.md"; ## Exemplo(s) ## Fluxo, camada e top layer O scrim `fullscreen` das variantes `focus` e `spotlight`, com layout de conteúdo padrão, usa `` modal e `showModal()`. Isso evita limitações impostas por ancestrais com `transform`, `filter` ou outros stacking contexts. Sem suporte nativo, permanece `fixed` na camada bloqueadora 4. As variantes `parent` e `legibility`, além de `content-layout="none"`, continuam locais. Em todas as composições a máscara ocupa a subcamada 0 e o conteúdo a 1. No fallback CSS, mantenha somente um bloqueador legado ativo por vez. --- ## Select import Playground from '@site/src/components/Playground'; import Overview from '../../stencil-generated-docs/select/overview.md'; import Props from '../../stencil-generated-docs/select/props.md'; import Slots from '../../stencil-generated-docs/select/slots.md'; import Parts from '../../stencil-generated-docs/select/parts.md'; import Events from '../../stencil-generated-docs/select/events.md'; import Methods from '../../stencil-generated-docs/select/methods.md'; import Dependencies from '../../stencil-generated-docs/select/dependencies.md'; import Migrate from '../../stencil-generated-docs/select/sections/migrate.md'; import Validation from '../../stencil-generated-docs/select/sections/validation.md'; import Accessibility from '../../stencil-generated-docs/select/sections/accessibility.md'; import NativeEvents from '../../stencil-generated-docs/select/sections/native-events.md'; import RelatedDocs from '../../stencil-generated-docs/select/sections/related-docs.md'; ## Exemplo ## Busca remota --- ## SelectInput import Overview from '../../../stencil-generated-docs/select/select-input/overview.md'; import Props from '../../../stencil-generated-docs/select/select-input/props.md'; {/* // import Slots from '../../../stencil-generated-docs/select/select-input/slots.md'; */} import Events from '../../../stencil-generated-docs/select/select-input/events.md'; import Methods from '../../../stencil-generated-docs/select/select-input/methods.md'; import Dependencies from '../../../stencil-generated-docs/select/select-input/dependencies.md'; import Migrate from '../../../stencil-generated-docs/select/select-input/sections/migrate.md'; ## Exemplos {/* */} --- ## SelectList import Overview from '../../../stencil-generated-docs/select/select-list/overview.md'; import Props from '../../../stencil-generated-docs/select/select-list/props.md'; {/* // import Slots from '../../../stencil-generated-docs/select/select-list/slots.md'; */} {/* // import Events from '../../../stencil-generated-docs/select/select-list/events.md'; */} import Methods from '../../../stencil-generated-docs/select/select-list/methods.md'; import Dependencies from '../../../stencil-generated-docs/select/select-list/dependencies.md'; import Migrate from '../../../stencil-generated-docs/select/select-list/sections/migrate.md'; ## Exemplos {/* */} {/* */} --- ## SelectOption import Overview from '../../../stencil-generated-docs/select/select-option/overview.md'; import Props from '../../../stencil-generated-docs/select/select-option/props.md'; {/* // import Slots from '../../../stencil-generated-docs/select/select-option/slots.md'; */} import Events from '../../../stencil-generated-docs/select/select-option/events.md'; import Methods from '../../../stencil-generated-docs/select/select-option/methods.md'; import Dependencies from '../../../stencil-generated-docs/select/select-option/dependencies.md'; import Migrate from '../../../stencil-generated-docs/select/select-option/sections/migrate.md'; ## Exemplos {/* */} --- ## Sign in import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/sign-in/overview.md"; import Props from "../../stencil-generated-docs/sign-in/props.md"; import Slots from "../../stencil-generated-docs/sign-in/slots.md"; import Parts from "../../stencil-generated-docs/sign-in/parts.md"; import Dependencies from "../../stencil-generated-docs/sign-in/dependencies.md"; import Migrate from "../../stencil-generated-docs/sign-in/sections/migrate.md"; import NavigationMigration from "../../stencil-generated-docs/sign-in/sections/navigation-migration.md"; ## Exemplo(s) --- ## Skip Link import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/skip-link/overview.md"; import Props from "../../stencil-generated-docs/skip-link/props.md"; import Events from "../../stencil-generated-docs/skip-link/events.md"; import Methods from "../../stencil-generated-docs/skip-link/methods.md"; import Parts from "../../stencil-generated-docs/skip-link/parts.md"; import Dependencies from "../../stencil-generated-docs/skip-link/dependencies.md"; ## Exemplo(s) --- ## Skip Link Item import Overview from "../../../stencil-generated-docs/skip-link/skip-link-item/overview.md"; import Deprecation from "../../../stencil-generated-docs/skip-link/skip-link-item/deprecation.md"; import Props from "../../../stencil-generated-docs/skip-link/skip-link-item/props.md"; import Methods from "../../../stencil-generated-docs/skip-link/methods.md"; import Dependencies from "../../../stencil-generated-docs/skip-link/skip-link-item/dependencies.md"; --- ## Slider import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/slider/overview.md"; import Props from "../../stencil-generated-docs/slider/props.md"; import Slots from "../../stencil-generated-docs/slider/slots.md"; import Events from "../../stencil-generated-docs/slider/events.md"; import Parts from "../../stencil-generated-docs/slider/parts.md"; import Dependencies from "../../stencil-generated-docs/slider/dependencies.md"; import Validation from "../../stencil-generated-docs/slider/sections/validation.md"; import Accessibility from "../../stencil-generated-docs/slider/sections/accessibility.md"; import NativeEvents from "../../stencil-generated-docs/slider/sections/native-events.md"; ## Exemplo(s) --- ## Step import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/step/overview.md"; import Props from "../../stencil-generated-docs/step/props.md"; import Slots from "../../stencil-generated-docs/step/slots.md"; import Events from "../../stencil-generated-docs/step/events.md"; import Methods from "../../stencil-generated-docs/step/methods.md"; import Parts from "../../stencil-generated-docs/step/parts.md"; import Dependencies from "../../stencil-generated-docs/step/dependencies.md"; ## Exemplo(s) --- ## step-item import Overview from "../../../stencil-generated-docs/step/step-item/overview.md"; import Props from "../../../stencil-generated-docs/step/step-item/props.md"; import Slots from "../../../stencil-generated-docs/step/step-item/slots.md"; import Methods from "../../../stencil-generated-docs/step/step-item/methods.md"; import Parts from "../../../stencil-generated-docs/step/step-item/parts.md"; import Dependencies from "../../../stencil-generated-docs/step/step-item/dependencies.md"; --- ## Switch import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/switch/overview.md"; import Props from "../../stencil-generated-docs/switch/props.md"; import Slots from "../../stencil-generated-docs/switch/slots.md"; import Events from "../../stencil-generated-docs/switch/events.md"; import Methods from "../../stencil-generated-docs/switch/methods.md"; import Dependencies from "../../stencil-generated-docs/switch/dependencies.md"; import Migrate from "../../stencil-generated-docs/switch/sections/migrate.md"; import Validation from "../../stencil-generated-docs/switch/sections/validation.md"; import Accessibility from "../../stencil-generated-docs/switch/sections/accessibility.md"; import NativeEvents from "../../stencil-generated-docs/switch/sections/native-events.md"; ## Exemplo(s) --- ## Tab import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/tab/overview.md"; import Props from "../../stencil-generated-docs/tab/props.md"; import Slots from "../../stencil-generated-docs/tab/slots.md"; import Events from "../../stencil-generated-docs/tab/events.md"; import Methods from "../../stencil-generated-docs/tab/methods.md"; import Parts from "../../stencil-generated-docs/tab/parts.md"; import Dependencies from "../../stencil-generated-docs/tab/dependencies.md"; import Migrate from "../../stencil-generated-docs/tab/sections/migrate.md"; ## Exemplo(s) --- ## tab-item import Overview from "../../../stencil-generated-docs/tab/tab-item/overview.md"; import Props from "../../../stencil-generated-docs/tab/tab-item/props.md"; import Slots from "../../../stencil-generated-docs/tab/tab-item/slots.md"; import Events from "../../../stencil-generated-docs/tab/tab-item/events.md"; import Dependencies from "../../../stencil-generated-docs/tab/tab-item/dependencies.md"; --- ## Table import Playground from '@site/src/components/Playground'; import Overview from '../../stencil-generated-docs/table/overview.md'; import Props from '../../stencil-generated-docs/table/props.md'; import Slots from '../../stencil-generated-docs/table/slots.md'; import Parts from '../../stencil-generated-docs/table/parts.md'; import Dependencies from '../../stencil-generated-docs/table/dependencies.md'; import RelatedDocs from '../../stencil-generated-docs/table/sections/related-docs.md'; ## Exemplo(s) ## Estado loading ## Dados remotos Defina `loading` enquanto a aplicação atualiza as linhas. O componente mantém o conteúdo anterior com opacidade reduzida, aplica `aria-busy="true"` e exibe o indicador customizado no slot `loading`, centralizado sobre os dados. Também é possível usar `startLoading()` e `stopLoading()`. A busca, o tratamento de erro e a substituição dos slots `header`/`body` permanecem sob responsabilidade da aplicação. Para reduzir layout e pintura de seções longas ao redor da tabela, consulte o guia de [`content-visibility`](/docs/next/guias-tecnicos/content-visibility). Essa técnica não substitui paginação ou virtualização das linhas. --- ## TableBody import Overview from "../../../stencil-generated-docs/table/table-body/overview.md"; import Parts from "../../../stencil-generated-docs/table/table-body/parts.md"; import Dependencies from "../../../stencil-generated-docs/table/table-body/dependencies.md"; ## Exemplo(s) --- ## TableCell import Overview from "../../../stencil-generated-docs/table/table-cell/overview.md"; import Props from "../../../stencil-generated-docs/table/table-cell/props.md"; import Events from "../../../stencil-generated-docs/table/table-cell/events.md"; import Parts from "../../../stencil-generated-docs/table/table-cell/parts.md"; import Dependencies from "../../../stencil-generated-docs/table/table-cell/dependencies.md"; ## Exemplo(s) --- ## TableHeader import Overview from "../../../stencil-generated-docs/table/table-header/overview.md"; import Parts from "../../../stencil-generated-docs/table/table-header/parts.md"; import Dependencies from "../../../stencil-generated-docs/table/table-header/dependencies.md"; ## Exemplo(s) --- ## TableHeaderCell import Overview from "../../../stencil-generated-docs/table/table-header-cell/overview.md"; import Props from "../../../stencil-generated-docs/table/table-header-cell/props.md"; import Events from "../../../stencil-generated-docs/table/table-header-cell/events.md"; import Parts from "../../../stencil-generated-docs/table/table-header-cell/parts.md"; import Dependencies from "../../../stencil-generated-docs/table/table-header-cell/dependencies.md"; ## Exemplo(s) --- ## TableRow import Overview from "../../../stencil-generated-docs/table/table-row/overview.md"; import Props from "../../../stencil-generated-docs/table/table-row/props.md"; import Events from "../../../stencil-generated-docs/table/table-row/events.md"; import Parts from "../../../stencil-generated-docs/table/table-row/parts.md"; import Dependencies from "../../../stencil-generated-docs/table/table-row/dependencies.md"; ## Exemplo(s) --- ## Tag import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/tag/overview.md"; import Props from "../../stencil-generated-docs/tag/props.md"; import Slots from "../../stencil-generated-docs/tag/slots.md"; import Events from "../../stencil-generated-docs/tag/events.md"; import Parts from "../../stencil-generated-docs/tag/parts.md"; import Dependencies from "../../stencil-generated-docs/tag/dependencies.md"; import Validation from "../../stencil-generated-docs/tag/sections/validation.md"; import Accessibility from "../../stencil-generated-docs/tag/sections/accessibility.md"; import NativeEvents from "../../stencil-generated-docs/tag/sections/native-events.md"; ## Exemplo(s) --- ## Textarea import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/textarea/overview.md"; import Props from "../../stencil-generated-docs/textarea/props.md"; import Slots from "../../stencil-generated-docs/textarea/slots.md"; import Events from "../../stencil-generated-docs/textarea/events.md"; import Methods from "../../stencil-generated-docs/textarea/methods.md"; import Dependencies from "../../stencil-generated-docs/textarea/dependencies.md"; import Validation from "../../stencil-generated-docs/textarea/sections/validation.md"; import Accessibility from "../../stencil-generated-docs/textarea/sections/accessibility.md"; import NativeEvents from "../../stencil-generated-docs/textarea/sections/native-events.md"; import RelatedDocs from "../../stencil-generated-docs/textarea/sections/related-docs.md"; ## Exemplo(s) --- ## Tooltip import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/tooltip/overview.md"; import Props from "../../stencil-generated-docs/tooltip/props.md"; import Slots from "../../stencil-generated-docs/tooltip/slots.md"; import Events from "../../stencil-generated-docs/tooltip/events.md"; import Methods from "../../stencil-generated-docs/tooltip/methods.md"; import Parts from "../../stencil-generated-docs/tooltip/parts.md"; import Dependencies from "../../stencil-generated-docs/tooltip/dependencies.md"; ## Exemplo(s) ## Fluxo e sobreposição O tooltip nunca participa do fluxo da página. Quando a Popover API está disponível, seu conteúdo entra na top layer; nos demais ambientes usa `position: fixed` e a camada flutuante 1. A posição é aplicada antes do primeiro cálculo assíncrono para não provocar reflow. Tooltips externos são fechados quando um bloqueador abre. Tooltips contidos no diálogo permanecem utilizáveis e, com Popover API, são pintados acima dele pela própria plataforma. --- ## Upload import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/upload/overview.md"; import Props from "../../stencil-generated-docs/upload/props.md"; import Slots from "../../stencil-generated-docs/upload/slots.md"; import Events from "../../stencil-generated-docs/upload/events.md"; import Methods from "../../stencil-generated-docs/upload/methods.md"; import Parts from "../../stencil-generated-docs/upload/parts.md"; import Dependencies from "../../stencil-generated-docs/upload/dependencies.md"; import Validation from "../../stencil-generated-docs/upload/sections/validation.md"; import Accessibility from "../../stencil-generated-docs/upload/sections/accessibility.md"; import NativeEvents from "../../stencil-generated-docs/upload/sections/native-events.md"; import RelatedDocs from "../../stencil-generated-docs/upload/sections/related-docs.md"; ## Exemplo(s) ### Handler fornecido pela aplicação --- ## Wizard import Playground from "@site/src/components/Playground"; import Overview from "../../stencil-generated-docs/wizard/overview.md"; import Props from "../../stencil-generated-docs/wizard/props.md"; import Slots from "../../stencil-generated-docs/wizard/slots.md"; import Events from "../../stencil-generated-docs/wizard/events.md"; import Methods from "../../stencil-generated-docs/wizard/methods.md"; import Parts from "../../stencil-generated-docs/wizard/parts.md"; import Dependencies from "../../stencil-generated-docs/wizard/dependencies.md"; ## Exemplo(s) --- ## wizard-panel import Overview from "../../../stencil-generated-docs/wizard/wizard-panel/overview.md"; import Props from "../../../stencil-generated-docs/wizard/wizard-panel/props.md"; import Slots from "../../../stencil-generated-docs/wizard/wizard-panel/slots.md"; import Parts from "../../../stencil-generated-docs/wizard/wizard-panel/parts.md"; import Dependencies from "../../../stencil-generated-docs/wizard/wizard-panel/dependencies.md"; --- ## Contribuindo import Contributing from '@site/../../CONTRIBUTING.md' --- ## CSS Parts CSS Parts são pontos de customização visual expostos por componentes com Shadow DOM. Eles permitem aplicar estilos em partes internas específicas usando o seletor `::part()`, sem quebrar o encapsulamento do componente. Essa é a forma recomendada para pequenos ajustes visuais quando o componente documenta uma parte pública. ## Componentes compostos e `exportparts` Quando um componente com Shadow DOM contém outro Web Component, `::part()` não atravessa o Shadow DOM automaticamente. O componente pai só deve expor uma parte interna do filho quando essa parte fizer parte do contrato visual público. Nesse caso, o filho declara `part` e o pai encaminha o nome com `exportparts`. Exemplo conceitual: ```html ``` No host, a customização é feita com `::part()`: ```css br-pagination::part(per-page-input) { min-width: 6rem; } ``` O `br-pagination` encaminha as partes públicas de `br-select`, `br-button` e do dropdown de reticências com nomes estáveis (`per-page-*`, `go-to-*`, `prev-button-inner`, `next-button-inner` e `ellipsis-button`). `br-select`, `br-datetime-picker`, `br-menu-item` e `br-menu-list` seguem o mesmo padrão quando compõem controles com partes públicas. Nem todo filho interno deve ser encaminhado: ícones, elementos auxiliares e classes de implementação continuam encapsulados. A ausência de `exportparts` é intencional quando o filho não possui uma parte documentada para consumo externo. ## Quando usar Use CSS Parts quando você precisa ajustar uma parte interna documentada, por exemplo: - A área interna de um botão. - O conteúdo de um card, tooltip ou sign-in. - Uma célula ou área de conteúdo de tabela. - Um ícone ou container exposto pelo componente. Se a personalização for sobre estado, densidade, ênfase ou variação suportada, prefira propriedades do componente. Use `::part()` apenas quando a customização visual não estiver coberta por propriedades. ## Sintaxe ```css br-button::part(button) { min-width: 12rem; } ``` O trecho acima estiliza a parte chamada `button` exposta por `br-button`. O nome usado dentro de `::part()` precisa existir na documentação do componente. Se o componente não expõe a parte, o seletor não terá efeito. ## Exemplo com botão ```html Continuar ``` ```css .acao-principal::part(button) { justify-content: center; min-width: 14rem; } ``` Esse ajuste altera apenas a parte interna exposta como `button`, mantendo o comportamento e a acessibilidade do componente. ## Exemplo com sign-in ```html Entrar com gov.br ``` ```css .entrada-govbr::part(content) { font-weight: 700; } ``` Nesse caso, a parte `content` controla a área de texto do `br-sign-in`. ## Exemplo com tabela ```html Serviço Situação Agendamento Disponível ``` ```css .tabela-servicos::part(container) { border: 1px solid var(--gray-20); } br-table-cell::part(content) { white-space: nowrap; } ``` O primeiro seletor ajusta o container exposto por `br-table`. O segundo ajusta a área de conteúdo das células. ## Limitações `::part()` só alcança partes expostas diretamente pelo componente selecionado. Ele não atravessa várias camadas de componentes sem que cada componente encaminhe explicitamente a parte com `exportparts`. ```css /* Funciona se br-table expuser a parte container */ br-table::part(container) { border-radius: 4px; } /* Não use ::part() para tentar alcançar uma estrutura interna não documentada */ br-table::part(container) .br-table-content { padding: 1rem; } ``` Para customizar componentes filhos, aplique uma classe ou seletor diretamente no componente filho. ```css .tabela-servicos br-table-cell::part(content) { font-weight: 600; } ``` ## Boas práticas - Consulte a seção **CSS Parts** da página de cada componente antes de escrever o seletor. - Prefira propriedades públicas para variações já previstas pelo componente. - Evite depender de classes internas do Shadow DOM; elas não fazem parte do contrato público. - Use classes na instância do componente para limitar o escopo da customização. - Mantenha ajustes visuais pequenos. Se a mudança alterar comportamento ou estrutura, avalie criar uma variação no componente. ## Relação com tokens Quando possível, combine CSS Parts com tokens ou variáveis do GovBR-DS. Isso mantém a customização alinhada ao tema e reduz divergências visuais. ```css .entrada-govbr::part(content) { color: var(--color-primary-default); } ``` --- ## Customização Os Web Components do GovBR-DS oferecem recursos para personalização de conteúdo e estilo sem quebrar o encapsulamento ou a acessibilidade. import DocCardList from '@theme/DocCardList'; --- ## Slots Slots são pontos de entrada para conteúdo dentro de um Web Component. Eles permitem que você componha a interface com textos, ícones, imagens, links e outros elementos sem depender de uma propriedade específica para cada variação de conteúdo. Na prática, o componente controla a estrutura, acessibilidade e comportamento. A aplicação fornece o conteúdo que entra nos espaços definidos pelo componente. ## Quando usar Use slots quando o conteúdo precisa ser flexível, sem alterar o contrato principal do componente. Exemplos comuns: - Texto ou ícone dentro de um botão. - Mensagem de erro, sucesso ou ajuda dentro de um campo. - Itens de navegação dentro de breadcrumb, menu, footer ou tabela. - Conteúdo complementar, como imagem institucional em `br-sign-in`. ## Slot padrão O slot padrão recebe o conteúdo que não possui o atributo `slot`. ```html Enviar solicitação ``` Nesse exemplo, o texto `Enviar solicitação` entra no slot padrão do `br-button`. ## Slots nomeados Slots nomeados recebem conteúdo marcado com `slot="nome-do-slot"`. Eles são usados quando o componente expõe mais de uma área de composição. ```html Informe um CPF válido. ``` No exemplo acima, o `br-message` ocupa o slot `feedback` do `br-input`. Isso mantém a mensagem conectada visualmente ao campo, sem exigir que a aplicação conheça a estrutura interna do componente. ## Compondo componentes Slots também podem receber outros Web Components. Esse padrão é útil em componentes compostos, como tabela, menu, footer e breadcrumb. ```html Serviço Situação Agendamento Disponível ``` O `br-table` recebe cabeçalho e corpo por slots nomeados. Cada parte continua sendo um componente independente, mas a tabela organiza o conjunto. ## Conteúdo alternativo Alguns componentes podem renderizar um conteúdo padrão quando o slot não é preenchido. Esse conteúdo é definido pelo próprio componente e deve ser tratado como comportamento interno. ```html Entrar ``` Se você quiser substituir áreas opcionais, use os slots documentados pelo componente: ```html Entrar com gov.br GovBR-DS ``` ## Boas práticas - Consulte a seção **Slots** da página de cada componente para saber quais nomes estão disponíveis. - Use o slot padrão para conteúdo principal e slots nomeados para áreas específicas. - Evite inserir elementos interativos dentro de outro elemento interativo, como um botão dentro de `br-button`. - Preserve nomes de slots exatamente como documentados, incluindo o caractere `-`. - Em frameworks, defina o atributo `slot` no elemento filho que deve ser projetado. ## Diferença entre slots e propriedades Use propriedades para configurar comportamento e estado do componente. Use slots para fornecer conteúdo. ```html Salvar ``` Nesse exemplo, `emphasis` e `density` configuram o componente. O texto `Salvar` é conteúdo projetado no slot padrão. --- ## Angular import Readme from '@site/../../packages/angular/README.md' --- ## Integração com Formulários e Validadores Os Web Components do GovBR-DS encapsulam a estrutura e a aparência dos inputs em um Shadow DOM, o que altera levemente a forma como as bibliotecas de validação interagem com eles. Esta página concentra o contrato geral de validação, a matriz de componentes e as receitas de integração com React, Angular e Vue. Os detalhes de cada campo ficam na seção **Validação** da página do componente correspondente. Para facilitar a integração, nossa documentação sugere algumas "receitas" para cenários práticos nos principais frameworks suportados. ## A diferença fundamental Os controles emitem `input` e `change` no host e mantêm o valor em propriedades como `value`, `checked` e `files`. Os wrappers oficiais traduzem esse contrato para `ControlValueAccessor`, props React e `v-model`. Consulte [Eventos nativos e eventos customizados](/docs/guias-essenciais/eventos/) para a semântica e a migração dos aliases da série 2.x. --- ## 🔵 Integração com React Hook Form Com os wrappers nativos exportados do pacote `@govbr-ds/webcomponents-react`, componentes de entrada como `br-input` repassam a referência (`ref`) do `HTMLElement` e os eventos canônicos `onInput` e `onChange`. Para ligar ao ecossistema do React Hook Form sem fricção, a estratégia ideal é o uso do `Controller`. ### Exemplo de uso com \`Controller\` ```tsx import { useForm, Controller } from 'react-hook-form'; import { br-input, br-button } from '@govbr-ds/webcomponents-react'; export default function MyForm() { const { control, handleSubmit } = useForm({ defaultValues: { username: '' } }); const onSubmit = data => console.log(data); return (
( onChange(event.currentTarget.value)} onBlur={onBlur} state={error ? 'danger' : 'info'} /> )} /> Enviar ); } ``` ### `valueChanges` equivalente, refs e eventos customizados No React, alterações externas devem passar por state/props. Eventos DOM nativos usam `event.currentTarget.value`; eventos `CustomEvent` usam `event.detail`: ```tsx import { useEffect, useRef, useState } from 'react'; import { BrSelect } from '@govbr-ds/webcomponents-react'; export function SelectField() { const selectRef = useRef(null); const [value, setValue] = useState(''); const [validationMessage, setValidationMessage] = useState(''); useEffect(() => { const select = selectRef.current; if (!select) return; const onValidation = (event: CustomEvent<{ message: string | null }>) => setValidationMessage(event.detail.message ?? ''); select.addEventListener('brSelectValidationChange', onValidation); return () => select.removeEventListener('brSelectValidationChange', onValidation); }, []); return ( setValue(event.currentTarget.value as string)} /> ); } ``` --- ## 🔴 Integração com Angular Reactive Forms No pacote `@govbr-ds/webcomponents-angular`, nós providenciamos os *Value Accessors* nativos. Isso garante que as diretivas `formControlName` e `[formControl]` funcionem sem esforço extra, de forma similar ao que você já faz em formulários nativos. ### Aplicação com NgModule Na entrada tradicional, importe `WebcomponentsAngularModule` de `@govbr-ds/webcomponents-angular`. O método `forRoot()` registra os Custom Elements e os value accessors do Angular. ```ts import { NgModule } from '@angular/core'; import { ReactiveFormsModule } from '@angular/forms'; import { WebcomponentsAngularModule } from '@govbr-ds/webcomponents-angular'; @NgModule({ imports: [ReactiveFormsModule, WebcomponentsAngularModule.forRoot()], }) export class AppModule {} ``` ### Aplicação Angular standalone Em uma aplicação standalone, importe os proxies e os validadores pela entrada `@govbr-ds/webcomponents-angular/standalone`: ```ts import { Component } from '@angular/core'; import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { BrButton, BrInput, FormValidityValidator, } from '@govbr-ds/webcomponents-angular/standalone'; @Component({ selector: 'app-user-form', standalone: true, imports: [ReactiveFormsModule, BrInput, BrButton, FormValidityValidator], template: `
Salvar
`, }) export class UserFormComponent { readonly userForm = new FormGroup({ email: new FormControl('', { nonNullable: true }), }); onSubmit() { if (this.userForm.valid) console.log(this.userForm.getRawValue()); } } ``` Não misture `WebcomponentsAngularModule` com os proxies standalone no mesmo componente. ### `valueChanges`, eventos customizados e zonas O value accessor não chama `onChange` quando a alteração vem do código. Para observar alterações aceitas pelo formulário use `valueChanges`; para observar a interação nativa use `input`/`change` no host. Callbacks fora da zona devem voltar para o Angular com `NgZone.run()`: ```ts import { ChangeDetectorRef, ElementRef, NgZone, ViewChild, inject } from '@angular/core'; // No componente que possui o formulário: @ViewChild('select', { read: ElementRef }) private readonly select!: ElementRef; private readonly zone = inject(NgZone); private readonly cdr = inject(ChangeDetectorRef); private validationMessage = ''; this.userForm.controls.email.valueChanges.subscribe((value) => { console.log('valor aceito pelo formulário:', value); }); this.select.nativeElement.addEventListener('brSelectValidationChange', (event: CustomEvent<{ message: string | null }>) => { this.zone.run(() => { this.validationMessage = event.detail.message ?? ''; this.cdr.markForCheck(); }); }); ``` No template, associe a referência ao host: ``. Em aplicações sem zone, atualize o estado explicitamente e chame o `ChangeDetectorRef` após o evento. --- ## 🟢 Integração com Vue (v-model) No ecossistema Vue (via pacote `@govbr-ds/webcomponents-vue`), nossos componentes são exportados para entender a diretiva `v-model`. ### Exemplo usando Composition API ```vue ``` ### Sincronização externa e eventos customizados No Vue, `v-model` é a fonte reativa do valor. Eventos DOM devem ser tratados com `@input`/`@change`; eventos customizados usam `$event.detail`: ```vue ``` ## Contrato nativo de validação Os controles associados a formulário participam de `FormData`, respeitam `required`, limites, padrões e comprimentos e expõem a mesma informação de validade por métodos assíncronos: ```ts type FormValidationState = ValidityState & { valid: boolean; validationMessage: string; willValidate: boolean; }; const field = document.querySelector('br-input'); await field.setCustomValidity(cpfValido(field.value) ? '' : 'Informe um CPF válido.'); const state = await field.getValidationState(); if (!state.valid) await field.reportValidity(); ``` `checkValidity()` apenas consulta e pode emitir `invalid` quando inválido. `reportValidity()` consulta e apresenta a mensagem. `setCustomValidity('mensagem')` torna o controle inválido; passe `''` para limpar. O evento `invalid` é cancelável e não borbulha, como no HTML nativo. ### Constraints por componente | Componente | Constraints | Estado consultável | | --- | --- | --- | | [br-input](/docs/components/input) | `type`, `required`, `pattern`, `min`, `max`, `step`, `minlength`, `maxlength` | `value` | | [br-textarea](/docs/components/textarea) | `required`, `readonly`, `minlength`, `maxlength` | `value` | | [br-select](/docs/components/select) | `required`, `min-selections`, `max-selections` | `value` | | [br-radio-group](/docs/next/components/radio-group) | `required` | `value` | | [br-checkbox](/docs/components/checkbox), [br-radio](/docs/components/radio), [br-switch](/docs/components/switch) | `required` | `checked`, `value` | | [br-slider](/docs/components/slider) | `min`, `max`, `step`; intervalo ordenado | `value`, `rangeValue` | | [br-datetime-picker](/docs/components/datetime-picker) | `required`, `min`, `max`; intervalo completo e ordenado | `value`, `rangeValue` | | [br-upload](/docs/components/upload) | `required`, `min-files`, `max-files`, `accept`, `max-file-size` | `files` | | [br-tag](/docs/components/tag) com `interaction-select` | `required`, `min-selections`, `max-selections` | `selected`, `value` | Constraints HTML ficam no componente. CPF, confirmação de senha, regras de negócio e dependências entre campos ficam na aplicação e devem ser sincronizadas com `setCustomValidity`. Todos os campos de formulário possuem o slot `feedback` para a mensagem visual. Quando o slot não é preenchido e existe uma mensagem customizada, o componente renderiza um `br-message` padrão. A referência acessível usa `aria-describedby` e `aria-errormessage`; consulte a seção **Validação** de cada componente para os detalhes do seu valor e das suas constraints. ### Validadores síncronos e assíncronos `br-input`, `br-textarea`, `br-select` e `br-radio-group` também aceitam a propriedade `validator` para regras de domínio que não cabem nas constraints HTML. O contrato é executado no `change` ou quando `validate()` é chamado, e retorna `null` em caso de sucesso ou uma mensagem de erro: ```ts const validator = async (value: string) => { const disponivel = await verificarDisponibilidade(value); return disponivel ? null : 'Esse valor já está em uso.'; }; const field = document.querySelector('br-input'); field.validator = validator; if (!(await field.validate())) return; ``` No modo múltiplo, `br-select` recebe `string[]` em vez de `string`. Em React, Angular e Vue, passe a função como propriedade com `validator={validator}`, `[validator]="validator"` ou `:validator="validator"`; atributos HTML não transportam funções. Durante a execução assíncrona, esses campos expõem `aria-busy="true"`, o slot `validation-loading` e um evento específico de mudança de validação. Consulte a seção **Validação** do componente para detalhes, estados de concorrência, mensagens e exemplos. ### Mensagem, acessibilidade e eventos Mostre o erro em texto e associe-o ao campo com `aria-describedby` ou `aria-errormessage`. Ao apresentar o erro, mantenha `aria-invalid="true"`; não dependa somente de `state="danger"`, cor ou ícone. O label visível deve fazer parte do nome acessível. ```html Informe um CPF válido. ``` `input` acompanha edição e `change` representa seleção ou commit. Leia o estado em `event.target.value`, `checked`, `files`, `selected` ou `rangeValue`; não espere payload em `detail`. Alterações externas, `form.reset()` e restauração de estado não emitem eventos de usuário. ```js form.addEventListener('submit', async (event) => { event.preventDefault(); const cpf = form.elements.cpf; await cpf.setCustomValidity(isCpfValid(cpf.value) ? '' : 'Informe um CPF válido.'); if (!(await form.reportValidity())) return; salvar(new FormData(form)); }); ``` No Angular, `FormValidityValidator` é declarado pelo módulo e também exportado pela entrada `standalone`; enquanto a Promise de validação está em andamento o controle fica `PENDING`. React usa eventos nativos e refs tipadas. Vue usa `v-model`, incluindo argumentos para `checked`, `files`, `selected` e `rangeValue` quando aplicável. ## Contrato canônico dos quickstarts As abordagens JavaScript, Angular, React e Vue usam este mesmo contrato. A mensagem indicada é sincronizada com `setCustomValidity` quando a regra não pertence ao HTML. | Campo | Regra | Mensagem | | --- | --- | --- | | nome | obrigatório, 5–100 caracteres | Nome deve ter no mínimo 5 caracteres. | | e-mail | obrigatório, `type=email`, até 120 caracteres | Informe um e-mail válido. | | idade | obrigatório, inteiro entre 18 e 120 | A idade mínima é 18 anos. | | CPF | obrigatório e dígitos verificadores válidos | Informe um CPF válido. | | celular | obrigatório, 10 ou 11 dígitos | Informe um celular válido. | | CEP | obrigatório, 8 dígitos | Informe um CEP válido. | | cidade | seleção obrigatória | Selecione sua cidade. | | descrição | obrigatória, 10–200 caracteres | O resumo deve ter entre 10 e 200 caracteres. | | contato | uma opção obrigatória no grupo | Selecione como conheceu o projeto. | | upload | ao menos um arquivo | Envie um documento probatório. | | senha | obrigatória, 8–128 caracteres | A senha deve ter no mínimo 8 caracteres. | | confirmação | igual à senha | As senhas devem ser iguais. | | termos | checkbox obrigatório | Você deve aceitar os termos. | | switch, slider, datetime e tags | opcionais; slider entre 0 e 10 | — | Criação, edição, reset, listagem e persistência devem preservar esse contrato. Os testes Playwright de cada quickstart exercitam as rotas de todas as abordagens e a publicação em base path. --- ## Integração com Frameworks A integração entre Web Components e frameworks pode não ser fácil em determinadas situações. Por isso, nós criamos as bibliotecas de integração (wrappers). Basicamente, elas encapsulam os Web Components em uma biblioteca de componentes na tecnologia nativa de algum framework. Isso facilita a integração com funcionalidades nativas dos frameworks, como, por exemplo, o binding. Para mais detalhes sobre como o Stencil faz a integração, consulte [a documentação do Stencil sobre integrações](https://stenciljs.com/docs/overview). Note que, em determinadas situações, pode não ser possível fazer essa integração. Isso depende muito da evolução da especificação de Web Components e do suporte dos frameworks. ## Web Components vs Frameworks | Aspecto | Web Components | Frameworks Específicos (Angular, React, Vue) | | ----------------------------- | ------------------------------------------------------------------ | ---------------------------------------------------------------- | | **Independência** | Funciona em qualquer projeto que suporte HTML, CSS e JS | Ligado ao ecossistema do framework, com dependências específicas | | **Reutilização** | Reutilizável em diferentes contextos e plataformas | Reutilização limitada a projetos usando o mesmo framework | | **Tamanho e Desempenho** | Mais leve, sem sobrecarga de bibliotecas adicionais | Pode ter uma sobrecarga de recursos, impactando o desempenho | | **Compatibilidade** | Compatível com várias stacks e frameworks | Pode ter problemas de compatibilidade ao migrar entre frameworks | | **Comunidade e Suporte** | Comunidade em crescimento, mas menor que a de frameworks populares | Comunidade ampla com suporte robusto e diversas bibliotecas | | **Curva de Aprendizado** | Requer conhecimento de APIs específicas de Web Components | Curva de aprendizado adaptada ao ecossistema do framework | | **Ferramentas e Ecossistema** | Ferramentas limitadas e em desenvolvimento | Ferramentas maduras para desenvolvimento, teste e deploy | | **Modularidade** | Modular por natureza, permite uso seletivo em projetos | Modularidade depende das ferramentas e práticas do framework | ### Estrutura e Filosofia - A biblioteca em Stencil utiliza a abordagem de Web Components nativos, proporcionando melhor compatibilidade e reutilização em diferentes frameworks. - Stencil permite a criação de componentes assíncronos e otimizações automáticas de build, melhorando o desempenho. ### Tipo de Dados - Stencil usa decorators do TypeScript, oferecendo tipagem mais rigorosa e suporte a IDEs, o que facilita o desenvolvimento e a manutenção. ### Ciclo de Vida - Os métodos do ciclo de vida dos componentes em Stencil diferem dos hooks em Vue. Familiarize-se com os métodos como `componentWillLoad`, `componentDidLoad`, e outros. ### Recomendações - Avalie cuidadosamente as necessidades do projeto antes de escolher uma ferramenta. - Considere a curva de aprendizado e a experiência da equipe de desenvolvimento. - Experimente diferentes ferramentas para encontrar a mais adequada ao projeto. ## Quickstarts oficiais Use os quickstarts como referência de estrutura de projeto, instalação e bootstrap. Consulte a [página central de quickstarts](../quickstarts) para acessar demonstrações, versões validadas e orientação de escolha. | Stack | Projeto | Comando local | | ---------- | --------------------------------------------------------------------------------------------------------------- | --------------- | | JavaScript | [govbr-ds-wbc-quickstart-js](https://gitlab.com/govbr-ds/bibliotecas/wbc/govbr-ds-wbc-quickstart-js) | `pnpm dev` | | Angular | [govbr-ds-wbc-quickstart-angular](https://gitlab.com/govbr-ds/bibliotecas/wbc/govbr-ds-wbc-quickstart-angular) | `pnpm start` | | React | [govbr-ds-wbc-quickstart-react](https://gitlab.com/govbr-ds/bibliotecas/wbc/govbr-ds-wbc-quickstart-react) | `pnpm dev` | | Vue | [govbr-ds-wbc-quickstart-vue](https://gitlab.com/govbr-ds/bibliotecas/wbc/govbr-ds-wbc-quickstart-vue) | `pnpm dev` | ## Guias Relacionados - [Navegação dos componentes](../guias-essenciais/navegacao-dos-componentes): como integrar links dos componentes com roteadores de frameworks sem quebrar a navegação nativa. --- ## React import Readme from '@site/../../packages/react/README.md' --- ## SSR e Hydration (Next, Nuxt, Angular Universal) Ao trabalhar com frameworks de SSR (Server-Side Rendering) ou SSG (Static Site Generation), o HTML é gerado em um ambiente Node.js, onde objetos de janela (`window` e `document`) não existem. Uma vez que Web Components, por sua própria natureza, dependem das APIs nativas do navegador (como `customElements.define` e `HTMLElement`), eles requerem uma abordagem de **Hydration** (Hidratação) específica. Os componentes GovBR-DS são construídos com StencilJS, que suporta hidratação SSR via "Declarative Shadow DOM", reduzindo os clássicos sobressaltos visuais de hidratação (FOUC). Abaixo detalhamos estratégias de como lidar com os Web Components em Next.js e frameworks similares. ## Next.js (App Router) A abordagem mais moderna no React 18 e Next.js App Router usa Server Components. Porém, como Web Components dependem do navegador para inicialização interativa, seus arquivos de inicialização devem ser marcados com `'use client'`. 1. **Crie um componente cliente para o Registry:** ```tsx // components/GovbrRegistry.tsx 'use client' import { useEffect } from 'react'; import { defineCustomElements } from '@govbr-ds/webcomponents/loader'; import '@govbr-ds/core/dist/core.min.css'; // Estilos globais export default function GovbrRegistry({ children }: { children: React.ReactNode }) { useEffect(() => { // Isso será executado apenas no navegador, e registrará todos os elementos defineCustomElements(window); }, []); return <>{children}; } ``` 2. **Englobe seu Layout Principal:** ```tsx // app/layout.tsx import GovbrRegistry from '../components/GovbrRegistry'; export default function RootLayout({ children }: { children: React.ReactNode }) { return ( {children} ); } ``` Dessa forma, os wrappers React exportados em `@govbr-ds/webcomponents-react` (``, ``, etc.) podem ser utilizados em arquivos de cliente e serão hidratados com segurança sem disparar erros de SSR, pois o React entende que eles emitem seu próprio HTML pre-renderizado. ## Nuxt.js 3 O Nuxt.js e o Vue trabalham excepcionalmente bem com Custom Elements, mas o compilador do Vue precisa saber que tags começando com `br-` não são componentes Vue e sim componentes da plataforma nativa, para que ele não tente resolvê-los no lado do servidor. No seu arquivo de configuração `nuxt.config.ts`: ```ts export default defineNuxtConfig({ vue: { compilerOptions: { isCustomElement: (tag) => tag.startsWith('br-') } }, plugins: [ { src: '~/plugins/govbr.client.ts', mode: 'client' } ] }) ``` E no seu plugin de cliente, faça o carregamento do `defineCustomElements` da mesma maneira. ## Evitando o FOUC (Flash of Unstyled Content) Um dos problemas clássicos com SSR e Web Components é o FOUC — um piscar de componentes sem estilo enquanto o JavaScript carrega e o `customElements.define` ainda não rodou. **Solução recomendada:** Sempre importe as classes base e tokens de estilo nativos do pacote `core` globalmente. Mesmo se o Web Component não tiver inicializado as interações e o Shadow DOM, sua "casca" principal terá as regras globais e a aparência ficará muito próxima da versão hidratada. O componente fará o upgrade silenciosamente ao terminar o download do bundle. --- ## Vue import Readme from '@site/../../packages/vue/README.md' --- ## Acessibilidade Os componentes seguem HTML nativo quando existe uma semântica equivalente e usam os padrões [WAI-ARIA APG](https://www.w3.org/WAI/ARIA/apg/patterns/) somente para widgets que não têm equivalente completo. A referência de conformidade é WCAG 2.2 AA. Axe ajuda a encontrar regressões, mas não substitui testes manuais. ## O que o consumidor precisa fornecer - Um label visível para cada controle; o nome acessível deve conter o texto apresentado. - Texto de ajuda e erro associado por `aria-describedby` ou `aria-errormessage`. - Mensagem textual de correção, além de `aria-invalid="true"` quando o erro for mostrado. - `name`, `value`, `checked` e `selected` coerentes quando o controle participar de formulário. - IDs estáveis quando usar `aria-labelledby`, `aria-describedby` ou `aria-controls`. Não use placeholder, cor, ícone ou tooltip como único meio de comunicar instrução, obrigatoriedade ou erro. Não adicione roles redundantes nem `tabindex` positivo. ## Foco e teclado | Widget | Referência | Operação | | --- | --- | --- | | botão/link | `button`/`a` | Tab; Enter e Espaço no botão | | checkbox/switch | checkbox/switch APG | Espaço alterna | | radio | radio group APG | setas, Home/End e roving tabindex | | slider | slider APG | setas, Home/End e páginas | | select/combobox | select/listbox APG | setas, Enter/Espaço e Escape | | collapse | `details`/`summary` | Enter/Espaço; `toggle` | | modal | dialog APG | foco inicial, contenção, Escape e retorno | | tabs/menu | tabs/menu APG | roving tabindex, setas, Home/End e Escape | | tooltip | tooltip APG | abre por foco/hover, fecha com Escape, nunca recebe foco | Os controles de formulário delegam `focus()` ao elemento nativo no Shadow DOM. Relações ARIA não atravessam automaticamente Shadow Roots: o componente mantém as referências internas ou o consumidor deve fornecer a relação no escopo correto. ## Estados e mensagens `aria-invalid`, `aria-checked`, `aria-selected`, `aria-expanded`, `aria-current` e valores de slider devem acompanhar o estado real. Para mensagens dinâmicas, use uma região de status com texto estável e não mova o foco sem necessidade. Em modais, devolva o foco ao acionador ao fechar. ## Verificação Antes de publicar uma aplicação, verifique em viewport de 320 CSS px e zoom de 200%/400%, contraste, forced colors, `prefers-reduced-motion`, navegação somente por teclado e leitores de tela. A checklist mínima é: - NVDA + Firefox; - VoiceOver + Safari; - TalkBack + Chrome; - Tab/Shift+Tab, setas, Home/End, Enter/Espaço e Escape. Consulte o [contrato de plataforma e APG](/docs/guias-essenciais/contrato-plataforma-e-apg/) para limitações de SSR/hydration e o [guia de formulários](/docs/frameworks/formularios/) para erros de formulário. --- ## Instalação via CDN Uma das maneiras mais rápidas de começar a usar a biblioteca de Web Components do GovBR-DS é incluindo os scripts e estilos diretamente do CDN na sua página HTML. Nós recomendamos a utilização do **[jsDelivr](https://www.jsdelivr.com/)**, um CDN global, rápido e confiável para projetos open-source. ## Incluindo os arquivos Para utilizar os componentes no seu projeto via CDN, adicione as seguintes tags ` ``` ## Como descobrir o que há nos pacotes? O [jsDelivr fornece um visualizador de diretórios](https://cdn.jsdelivr.net/npm/@govbr-ds/webcomponents/) excelente. Se você precisa localizar um arquivo específico, CSS interno de componente, ou entender a estrutura gerada: 1. Acesse: `https://cdn.jsdelivr.net/npm/@govbr-ds/webcomponents/` (Adicione uma `/` no final da URL de qualquer pacote no jsDelivr para ver seus arquivos). 2. Você verá uma interface de navegador de arquivos listando todo o conteúdo publicado do NPM. 3. Isso é especialmente útil se você quiser carregar módulos nominais (es modules) individuais ou inspecionar os arquivos de tipagem (`.d.ts`). ### Travando uma versão específica Evite utilizar `@latest` em ambientes de produção, pois uma nova versão _major_ ou _minor_ pode introduzir mudanças drásticas (breaking changes). É altamente recomendável travar a versão (ex: `@1.2.0`): ```html ``` Dessa forma, sua aplicação continuará estável independentemente de lançamentos futuros. --- ## Ciclo de Vida Assim como frameworks como React ou Angular possuem seus métodos e hooks de ciclo de vida (lifecycle), os Web Components baseados na especificação nativa do navegador (`CustomElements`) possuem o seu próprio ciclo de vida. Entender esses ciclos é vital para compreender como e quando manipular propriedades, inserir filhos (via Slots) ou interagir com a DOM gerada (Shadow DOM). A biblioteca do GovBR-DS utiliza o compilador **Stencil**, que abstrai e adiciona ciclos assíncronos de forma semelhante à forma que o React opera. ## Métodos de Ciclo de Vida Nativos (Custom Elements) Quando você insere um componente `` no HTML, o navegador aciona os seguintes eventos básicos na classe registrada: 1. **`connectedCallback()`**: Invocado sempre que o componente é inserido no DOM. 2. **`disconnectedCallback()`**: Invocado sempre que o componente é removido do DOM (útil para limpeza de eventos). 3. **`attributeChangedCallback()`**: Acionado quando um atributo observado é adicionado, modificado, removido ou substituído. ## O Ciclo Assíncrono do GovBR-DS (Stencil) Porque nossos componentes são criados usando StencilJS, as atualizações na tela ocorrem de forma assíncrona para garantir performance e agrupamento (batching) de renderização. Isso significa que **modificar uma propriedade** não causa uma atualização visual imediata, síncrona. Ela agenda uma renderização para o próximo frame. ### Fluxo de Inicialização 1. **Invocação / Criação (`constructor`)**: Os estados internos e as propriedades padrão recebem seus valores iniciais. 2. **`componentWillLoad()`**: Método onde você (ou nós da biblioteca) podemos disparar requisições ou ler configurações antes do primeiro 'desenho' na tela. 3. **Renderização (`render`)**: O Shadow DOM inicial e o JSX são transformados no DOM final do componente. 4. **`componentDidLoad()`**: Disparado assim que a árvore HTML interna está totalmente desenhada na tela. Esse é o melhor momento para acessar elementos da DOM via `document.querySelector` em um projeto vanilla. ### Fluxo de Atualização Toda vez que você muda uma propriedade de um componente (ex: `button.loading = true`), o seguinte ciclo acontece: 1. **`componentWillUpdate()`**: Componente descobre que uma propriedade mudou. 2. **Renderização (`render`)**: Ocorre a reavaliação apenas da parte do Shadow DOM que foi modificada. 3. **`componentDidUpdate()`**: O componente terminou de aplicar as mudanças na tela. ## Qual a importância disso no dia a dia? ### 1. Interação Baseada em Propriedades vs Atributos Tratar componentes web puramente via HTML baseia-se em **Atributos**: ```html ``` Porém, ao interagir com o componente via JavaScript (ou Frameworks), você deve tratar as **Propriedades**: ```javascript const inputEl = document.querySelector('br-input'); // Evite usar setAttribute, pois pode não disparar certas tipagens. inputEl.disabled = true; // ✅ Forma Correta (Propriedade) ``` ### 2. Atrasos de Renderização em Vanilla JS Se você precisar acessar uma dimensão física de um componente (ou de um sub-elemento interno do seu Shadow DOM) logo após alterar o seu estado, você deve esperar o fluxo assíncrono. O Stencil expõe uma Promise em cada componente, o método `componentOnReady()`. ```javascript const modal = document.querySelector('br-modal'); modal.show = true; // ❌ Se você checar a DOM agora, a animação não começou e os elementos podem não estar visíveis. console.log(modal.offsetHeight); // ✅ Forma segura: aguarde o componente finalizar seu ciclo await modal.componentOnReady(); console.log(modal.offsetHeight); // Altura correta. ``` (Note: Usuários de React, Vue, e Angular não costumam precisar chamar `componentOnReady`, porque os wrappers gerados para essas tecnologias gerenciam as Promises por baixo dos panos na maior parte das atualizações). --- ## Contrato da plataforma, APG e WCAG Este documento registra o contrato de implementação. A referência normativa é o [HTML Standard](https://html.spec.whatwg.org/), complementada pelos [padrões APG](https://www.w3.org/WAI/ARIA/apg/patterns/) quando HTML não oferece o widget completo. ARIA descreve comportamento existente; não substitui teclado, foco ou estado. ## Mapeamento | Família | Referência preferida | Teclado e foco essenciais | |---|---|---| | botão, magic button | `button` | Enter e Espaço ativam; foco visível | | link, breadcrumb, skip link, paginação | `a`, `nav`, listas | Tab; Enter segue o link; página atual com `aria-current` | | input, textarea, upload | `input`, `textarea` | comportamento nativo, label associado e erro descrito | | checkbox e switch | checkbox / APG switch | Espaço alterna; `checked` ou `aria-checked` sincronizado | | radio | radio group | setas mudam opção; um único item na ordem de Tab | | select | select, combobox/listbox | setas, Home/End e Escape conforme o modo | | slider | range / APG slider | setas, Home, End, Page Up e Page Down | | collapse | `details`/`summary` | Enter e Espaço alternam; evento `toggle` | | modal | dialog | foco inicial, contenção, Escape e retorno ao acionador | | tooltip | APG tooltip | abre por foco/hover, fecha com Escape e não recebe foco | | tabs | APG tabs | roving tabindex, setas, Home/End e painel associado | | menu | APG menu | setas, Home/End, Enter/Espaço e Escape | | carousel | APG carousel | pausa controlável, alternativa a arrastar e anúncios moderados | | table | tabela nativa; grid apenas se editável | navegação nativa ou teclado completo do grid | | step e wizard | lista/roving tabindex | estado atual determinável e foco previsível | IDs usados por `aria-labelledby`, `aria-describedby`, `aria-errormessage` e `aria-controls` precisam existir no mesmo escopo de árvore. Uma referência textual não atravessa automaticamente um Shadow Root. Quando a relação cruza esse limite, o componente deve manter a relação dentro do próprio Shadow DOM ou usar referências de elementos do `ElementInternals` quando disponíveis. ## SSR e hydration Não leia `window`, `document`, medidas de layout ou preferências de mídia durante a renderização no servidor. Essas APIs pertencem aos callbacks executados no cliente e devem ter guarda de ambiente. Timers e observers precisam ser removidos em `disconnectedCallback`. Quando o ID participa do HTML hidratado, forneça `custom-id` estável a partir dos dados da aplicação. O gerador automático atual garante unicidade no cliente, mas usa tempo e aleatoriedade e, portanto, não é uma fonte determinística entre servidor e cliente. Essa é uma limitação conhecida da série 2.x; fixtures de SSR devem sempre fornecer IDs explícitos até a migração para uma estratégia determinística compatível com múltiplas requisições. --- ## Convenções de API Os componentes priorizam HTML, DOM e padrões WAI-ARIA antes de criar contratos próprios. Em releases não-major, a evolução é aditiva: uma API publicada não muda de nome, tipo ou comportamento. ![Diagrama de evolução aditiva: a API legada continua enquanto a API canônica é adicionada e validada.](/img/docs/web-components/evolucao-aditiva.svg) ## Vocabulário | Contexto | Convenção | Exemplos | | --- | --- | --- | | Estado booleano | adjetivo sem `is` ou `has` | `active`, `open`, `inline` | | Variação funcional | `variant` | `variant="primary"` | | Contexto visual | `colorMode` | `color-mode="dark"` | | Feedback | `feedbackState` | `feedback-state="danger"` | | Direção | `orientation` | `orientation="vertical"` | | Índice técnico | zero-based | `index={0}` | | Página apresentada | one-based | `current-page={1}` | Propriedades JavaScript seguem os nomes IDL, como `readOnly`, `maxLength`, `ariaHasPopup` e `tabIndex`. Seus atributos seguem a grafia HTML: `readonly`, `maxlength`, `aria-haspopup` e `tabindex`. ## Eventos e métodos Eventos nativos são usados quando possuem a mesma semântica da plataforma. Eventos de domínio usam camelCase no formato `brComponenteAção`; navegação interceptável usa `brNavigate`. Todo evento customizado novo documenta `detail`, propagação, composição e cancelamento. Métodos usam verbos em camelCase e não repetem uma propriedade sem necessidade. Recursos nativos como `focus()`, validação, dialog e popover são preferidos quando preservam o contrato do componente. ## Evolução compatível Quando um nome melhor é introduzido, a API anterior continua operacional e recebe `@deprecated`. Os dois nomes usam a mesma implementação; se ambos forem informados, o canônico vence. A documentação e os exemplos recomendam o nome novo; a equivalência é documentada na página do componente correspondente. Depreciação não significa remoção agendada. Uma possível remoção exige decisão e planejamento separados para uma versão principal. ## Estilos e composição Estado exclusivamente visual novo usa custom properties no formato `--br-{componente}-{elemento}-{propriedade}`. Props visuais já publicadas continuam funcionando. Slots usam nomes funcionais, como `label`, `description`, `actions`, `header`, `footer` e `trigger`; CSS parts descrevem o papel estrutural, não classes internas. --- ## Eventos nativos e eventos customizados Os controles GovBR-DS usam eventos da plataforma quando reproduzem a semântica de um controle HTML. Assim, `br-input`, `br-select`, checkbox, radio, switch, slider, datetime, upload e tags selecionáveis podem ser consumidos como elementos nativos: o estado fica no `event.target`. ![Fluxo de um evento pelo Shadow DOM: o consumidor observa a emissão legada e a canônica, com propagação e composição explícitas.](/img/docs/web-components/eventos-shadow-dom.svg) ```js campo.addEventListener('input', (event) => console.log(event.target.value)) checkbox.addEventListener('change', (event) => console.log(event.target.checked)) ``` ## Qual evento usar | Evento | Use quando | Estado | | --- | --- | --- | | `input` | o valor muda continuamente, como digitação ou arraste | `target.value`, `checked`, `files` ou `rangeValue` | | `change` | a edição é confirmada ou uma opção é selecionada | o mesmo estado público do host | | `focus` / `blur` | o consumidor precisa reagir à entrada ou saída do controle | o host do Web Component; `blur` não é delegável | | `focusin` / `focusout` | um contêiner precisa delegar foco de controles descendentes | o host e seus descendentes no caminho do evento | | `click`, `submit`, `reset`, `invalid`, `toggle` | a interação tem exatamente a semântica HTML correspondente | propriedades do elemento/evento | | `CustomEvent` | a ação é de domínio, ciclo de vida ou precisa de payload próprio | `event.detail` | Eventos como `brNavigate`, `pageChange` e `brWizardComplete` continuam customizados: chamar qualquer um deles de `change` apagaria informação importante e contrariaria a semântica da plataforma. ## Vantagens e limites Eventos nativos reduzem a API que o consumidor precisa aprender, integram-se melhor com formulários e frameworks e permitem ler o estado diretamente do elemento. Eles não servem, porém, para payload arbitrário nem para qualquer mudança visual. Um nome nativo só deve ser usado quando seu significado for o mesmo do HTML. Em Shadow DOM, `bubbles` controla a propagação pela árvore e `composed` permite atravessar o limite da shadow root. A biblioteca redispara no host um único evento composto; ouvir simultaneamente o elemento interno e o host causaria duplicidade. Consulte [`Event.composed`](https://developer.mozilla.org/en-US/docs/Web/API/Event/composed). Os testes com `render()` cobrem componentes isolados. Os testes que usam `createBrowserTestFixture()` simulam uma página com custom elements registrados, Shadow DOM profundo e bundle de distribuição. Por isso os targets E2E, plataforma e acessibilidade dependem de `build:dist`; executar Vitest diretamente sem esse target pode carregar um `dist` antigo. Um evento redisparado no host é sintético: ele preserva o contrato documentado de tipo, flags e estado público, mas não preserva `isTrusted` nem necessariamente todos os campos específicos da instância nativa interna. Para controles, ouça `blur` diretamente no componente e use `focusout` quando precisar de delegação. ## Escritas externas são silenciosas Definir `element.value`, atualizar `ngModel`/`FormControl`, alterar uma prop React/Vue ou restaurar/redefinir um formulário atualiza o componente sem emitir `input` ou `change`. Eventos representam interação ou commit, não simples sincronização de estado; isso evita loops de two-way binding. ## Frameworks ```html title="Angular" ``` ```tsx title="React" setNome(event.currentTarget.value)} /> ``` ```vue title="Vue" ``` Os wrappers apenas traduzem esses contratos para a convenção do framework; o Web Component continua utilizável sem wrapper. --- ## Navegacao dos componentes Os componentes navegáveis seguem o mesmo contrato: por padrão, comportam-se como links HTML comuns. Isso preserva acessibilidade, SEO, copiar link, abrir em nova aba, histórico do navegador e comportamento esperado por tecnologias assistivas. ## Padrão nativo O modo padrão é `navigation-mode="native"`. Quando existe destino, o componente renderiza uma âncora real e deixa o navegador decidir a navegação. ```html Serviços ``` ## Integração com SPAs SPAs podem assumir a navegação usando `navigation-mode="event"`. ```html Servicos ``` ```js document.addEventListener('brNavigate', (event) => { event.preventDefault(); router.navigate(event.detail.href); }); ``` O evento `brNavigate` é cancelável. Com `preventDefault()`, o componente bloqueia a navegação nativa. Sem cancelamento, o navegador segue normalmente. ## Componentes que seguem o contrato Todos os componentes abaixo usam `navigation-mode="native"` por padrão e aceitam `navigation-mode="event"` para integração com SPA: | Componente | Elemento navegável | Observação | | --- | --- | --- | | `br-link` | `` próprio | Mantém `isSpaLinkBehavior` e `brSpaNavigate` somente como aliases depreciados. | | `br-item` | `` próprio | Também pode renderizar botão quando não há `href`. | | `br-breadcrumb` | Links dos itens e Home | `navigation-mode` é configurado no componente pai. | | `br-menu-link` | `` próprio | O destino é sempre `href`; `url` é apenas alias/slot legado de conteúdo. | | `br-menu-item` | `br-item` interno | Itens expansíveis continuam sendo controles de menu. | | `br-menu-social` | `` ou botão | Só usa o modo SPA quando possui `href`. | | `br-header`, `br-header-link`, `br-header-function` | Links internos ou `br-item` | Ações sem `href` continuam sendo botões. | | `br-header-logo` | `` quando possui `href` | Sem destino, permanece não navegável. | | `br-sign-in` | `` ou botão | `href` define o modo link. | | `br-footer-item` | `br-item` interno | Encaminha `navigation-mode` para o item. | | `br-footer-logo`, `br-footer-social` | `` quando possuem `href` | Destinos externos e `target` diferente de `_self` permanecem nativos. | | `br-cookiebar-link` | `` | Mantém `href` real no host. | Componentes compostos encaminham a propriedade e o evento do elemento navegável. O consumidor deve escutar `brNavigate` no componente usado na marcação; o payload mantém `event` e `href` em todos os casos. ## Modos | Modo | Comportamento | | --- | --- | | `native` | Padrão. Mantém a navegação do navegador e não exige código da aplicação. | | `event` | Emite `brNavigate` para integração com roteadores SPA. Só bloqueia o reload quando o evento é cancelado. | ## Regras - Todo componente que representa navegação deve manter um `href` real. - `navigation-mode` aceita `native` e `event`, com default `native`. - `brNavigate` é cancelável, composto e propagado. - O componente não chama `window.history.pushState` nem conhece o roteador da aplicação. - Cliques modificados, clique do meio e `target` diferente de `_self` permanecem nativos. - `target="_blank"` usa `rel="noopener noreferrer"` quando a âncora é renderizada pelo componente. - Estados desabilitados não navegam nem emitem `brNavigate`. - O contrato de cada componente também aparece na seção **Migração de Navegação** da sua documentação específica. --- ## Carregamento, lazy loading e CSP ## Bundler Instale o pacote e importe o loader ESM na entrada da aplicação. O runtime carrega os chunks dos componentes utilizados sob demanda. ```js import '@govbr-ds/core/dist/core.min.css' import '@govbr-ds/webcomponents/dist/webcomponents/webcomponents.esm.js' ``` ## CDN Fixe uma versão explícita. Não use `latest` em produção: ```html ``` Consulte o [guia de CDN](/docs/guias-essenciais/cdn/) para estilos e exemplos completos. ## Content Security Policy - Autorize a origem do script em `script-src` quando usar CDN. - Autorize fontes e estilos do Core nas diretivas correspondentes. - Prefira arquivos de script a código inline. - Valide a aplicação com sua política real; o Playground não substitui essa verificação. ## Evitando FOUC - Carregue o CSS do Core antes de exibir a aplicação. - Posicione o loader ESM na entrada principal. - Em SSR, siga o [guia de hydration](/docs/frameworks/ssr-e-hydration/). - Use o estado de componente definido apenas quando ocultar temporariamente conteúdo for realmente necessário. ## Tree shaking e lazy loading Os componentes Stencil são distribuídos em chunks. Não copie todo o diretório do pacote manualmente nem publique `node_modules`; permita que o bundler resolva os assets a partir do entrypoint público. --- ## Content visibility e seções longas `content-visibility` é uma propriedade CSS que permite ao navegador adiar style, layout e pintura de conteúdo que está fora da viewport. Ela é útil para uma página com muitas seções, cards ou notificações que continuam presentes no DOM, mas não precisam ser desenhadas imediatamente. Ela não é o mesmo que: - **Virtual DOM:** estratégia de atualização de frameworks e bibliotecas. - **Virtualização:** mantém somente uma janela de itens no DOM. - **Paginação:** divide os dados em páginas menores. - **Lazy loading:** adia carregamento de código, dados ou recursos. `content-visibility` não impede a criação dos filhos de um slot e não limita a quantidade de linhas de uma tabela. Para coleções grandes, combine paginação ou virtualização controlada pelo consumidor com esta técnica no container visual. ## Uso recomendado Aplique a propriedade em uma seção relativamente grande, criada pela aplicação, e forneça uma estimativa de tamanho para evitar mudanças bruscas de layout: ```css .secao-extensa { content-visibility: auto; contain-intrinsic-size: auto 40rem; } ``` O valor de `contain-intrinsic-size` deve representar a altura típica da seção. Calibre-o com conteúdo real: uma estimativa muito pequena provoca deslocamento quando a seção é revelada; uma estimativa muito grande deixa espaços vazios. Exemplo com conteúdo projetado em componentes: ```html

Avisos recentes

... ...
``` O mesmo CSS pode ser usado em React, Angular, Vue ou JavaScript. Não é necessário adicionar bindings ou propriedades aos wrappers. ## Quando não usar Evite aplicar a propriedade diretamente a componentes individuais pequenos, focáveis ou usados como referência de layout. Não use como substituto para: - `br-table` com milhares de linhas: use paginação ou janela virtual no consumidor; - `br-list`, `br-notification` ou `br-carousel` com dados extensos: controle a janela de conteúdo na aplicação; - `br-select` com muitas opções: use a janela virtual interna e busca remota; - overlays, dropdowns, tooltips, modais e scrims posicionados; - regiões `aria-live` que precisam anunciar mudanças imediatamente; - elementos `sticky` ou conteúdos cuja geometria é medida durante a interação; - conteúdo que precisa estar pronto para impressão ou medição síncrona sem uma verificação específica. Oculte somente uma região que possa ser revelada naturalmente pela rolagem. Não remova o conteúdo, não use `display: none` para simular a técnica e não coloque `aria-hidden="true"` em elementos que continuam focáveis. ## Checklist de validação Depois de aplicar a propriedade, valide a página no navegador real: - navegue até a seção usando teclado, âncora e busca na página; - confirme que o foco continua visível e que a ordem de tabulação não muda; - teste leitor de tela, `aria-live`, zoom de 200% e viewport de 320px; - confira impressão, screenshots e navegação direta para IDs internos; - observe deslocamento de layout quando a seção entra na viewport; - meça quantidade de nós e layout/pintura antes e depois, sem usar apenas tempo de relógio; - remova a propriedade para confirmar que existe um fallback funcional. Para `br-table`, consulte a orientação de [paginação e virtualização no consumidor](/docs/next/components/table). Para dados carregados de forma incremental, consulte o guia de [dados remotos](/docs/next/guias-tecnicos/dados-remotos). --- ## Dados remotos e carregamento Componentes visuais não fazem chamadas HTTP. A aplicação escuta os eventos de interação, controla debounce, autenticação, cache e cancelamento e devolve os dados por propriedades, slots ou conteúdo projetado. ## Busca em [`br-select`](/docs/components/select) Use `filterable` e `search-mode="remote"`. O evento `brSelectSearch` contém a consulta atual em `event.detail.query`, inclusive quando ela é limpa. ```js let requestId = 0; let controller; select.addEventListener('brSelectSearch', async ({ detail: { query } }) => { controller?.abort(); const currentRequest = ++requestId; controller = new AbortController(); select.loading = true; try { const url = new URL('/api/options', location.origin); url.searchParams.set('q', query.trim()); const response = await fetch(url, { signal: controller.signal }); if (!response.ok) throw new Error('Não foi possível carregar as opções.'); const result = await response.json(); if (currentRequest === requestId) await select.setOptions(result.items); } catch (error) { if (!(error instanceof DOMException && error.name === 'AbortError')) { // Mostre uma mensagem role="alert" fora do componente. } } finally { if (currentRequest === requestId) select.loading = false; } }); ``` Defina o limite mínimo de caracteres na aplicação. Por exemplo, antes de consultar o serviço, limpe as opções quando a consulta tiver menos de dois caracteres. O consumidor também pode mapear a resposta para o formato `{ label, value }` antes de chamar `setOptions()`. O componente preserva a seleção atual quando o item selecionado não aparece na janela de resultados seguinte. O consumidor deve mapear e validar o payload da API antes de passá-lo ao componente. ## [`br-pagination`](/docs/components/pagination) e [`br-table`](/docs/components/table) `br-pagination` já emite `brPaginationPageChange` e `brPaginationPerPageChange`. Defina `loading` enquanto busca a página; os controles ficam bloqueados e `aria-busy="true"` é aplicado. Use `controlled` quando a página visível só puder mudar após uma resposta bem-sucedida. Nesse modo, os eventos comunicam `page` ou `perPage`, mas a aplicação confirma a mudança atribuindo `current` ou `perPage`. `br-table` recebe `loading` enquanto suas linhas são atualizadas. As linhas anteriores permanecem visíveis para evitar mudança de layout; o novo conteúdo continua sendo fornecido pelos slots `header` e `body`. ## Outros campos ### Validação remota em [`br-input`](/docs/components/input) e [`br-textarea`](/docs/components/textarea) Para validar disponibilidade, unicidade ou outra regra de domínio no servidor, atribua uma função assíncrona a `validator`. A função recebe o valor textual e retorna `null` quando válido ou uma mensagem quando inválido. O componente expõe `aria-busy="true"`, o slot `validation-loading` e um evento de início e fim da validação. A validação ocorre no `change` ou quando a aplicação chama `validate()`; não ocorre a cada tecla. ```js input.validator = async (value) => { const response = await fetch(`/api/usuarios/${encodeURIComponent(value)}`); if (!response.ok) throw new Error('Falha ao consultar o usuário.'); return (await response.json()).available ? null : 'Valor já utilizado.'; }; const valid = await input.validate(); ``` Use `AbortController` e um identificador de requisição na própria função quando a política da aplicação exigir cancelamento. O componente ignora o resultado de uma validação antiga, mas não cancela automaticamente o `fetch`. Consulte também as seções de [validação do input](/docs/components/input) e do [textarea](/docs/components/textarea). ### Upload assíncrono em [`br-upload`](/docs/components/upload) `br-upload` aceita `uploadHandler` como propriedade JavaScript. O callback recebe `file`, `signal` e `onProgress`; endpoint, autenticação e formato da resposta continuam externos. Use `brUploadStart`, `brUploadProgress`, `brUploadSuccess` e `brUploadError` para atualizar a aplicação. Sem `uploadHandler`, o componente mantém apenas a seleção e a validação dos arquivos. ```js upload.uploadHandler = async ({ file, signal, onProgress }) => { const body = new FormData(); body.append('arquivo', file); // fetch não expõe progresso de upload; use um cliente que aceite onProgress // quando a interface precisar exibir percentual real. const response = await fetch('/api/arquivos', { method: 'POST', body, signal }); if (!response.ok) throw new Error('Falha no envio.'); }; ``` Quando o cliente de transporte oferecer progresso, encaminhe-o por `onProgress`. `cancelUpload()` aborta o envio atual pelo `AbortSignal`. `br-list` e `br-dropdown` são componentes de composição e também não assumem transporte ou estado de dados. --- ## Assistentes de IA O site gera `llms.txt`, `llms-full.txt`, o Custom Elements Manifest e versões Markdown das páginas. Esses recursos ajudam assistentes a localizar a API da versão instalada sem depender apenas do HTML renderizado. Quando existem documentações versionadas, `llms.txt` e `llms-full.txt` apontam para a versão estável mais recente. A documentação em desenvolvimento usa `llms-next.txt` e `llms-full-next.txt`; cada versão publicada também possui arquivos próprios, como `llms-1.0.0.txt` e `llms-full-1.0.0.txt`. O botão de assistência por IA seleciona automaticamente o arquivo correspondente à versão da página aberta. ## Contexto recomendado Informe ao assistente: - framework e versão; - pacote GovBR-DS utilizado; - componente e comportamento desejado; - restrições de acessibilidade; - se a resposta deve usar HTML, Angular, React ou Vue; - página da API e diretriz oficial relacionada. ## Prompts de exemplo ```text Crie em React um formulário com @govbr-ds/webcomponents-react. Use React Hook Form com Controller, cite as páginas da API utilizadas e revise nomes de eventos, labels, foco e mensagens de erro. ``` ```text Migre este componente imperativo do @govbr-ds/core para br-select. Use somente APIs documentadas, explique atributos versus propriedades e preserve o comportamento de teclado. ``` ```text Revise este modal GovBR-DS para nome acessível, foco inicial, tecla Escape e retorno de foco. Aponte o que exige teste manual. ``` ## Como a IA deve usar este conteúdo Esta página é uma orientação curta para assistentes que consultam `llms-full.txt`. Para implementar algo, a IA deve: - confirmar a API na página do componente e no Custom Elements Manifest gerado para a mesma versão; - usar apenas pacotes, tags e eventos documentados, preferindo APIs canônicas; - tratar o código gerado como ponto de partida e recomendar validação conforme o [guia de formulários](../frameworks/formularios) e o guia de [acessibilidade](../guias-essenciais/acessibilidade). As regras detalhadas ficam nas páginas de [formulários](../frameworks/formularios), [eventos nativos e customizados](../guias-essenciais/eventos) e [convenções de API](../guias-essenciais/convencoes-de-api). Depreciações são documentadas na página do componente correspondente. Para decisões de design, consulte [gov.br/ds](https://www.gov.br/ds/). --- ## Introdução Componentes do Padrão Digital de Governo prontos para HTML, JavaScript, Angular, React e Vue. A biblioteca usa Custom Elements e Shadow DOM, com wrappers oficiais para oferecer tipagem, eventos e formulários idiomáticos em cada framework. ## Onde encontrar cada informação | Preciso de | Fonte | | --- | --- | | Anatomia, fundamentos, padrões e UX Writing | [Padrão Digital de Governo](https://www.gov.br/ds/) | | Propriedades, eventos, slots, parts e exemplos | Este site | | Aplicação completa por framework | [Quickstarts oficiais](./quickstarts) | | Código-fonte, issues e releases | [GitLab](https://gitlab.com/govbr-ds/bibliotecas/wbc/govbr-ds-wbc/) | ## Pacotes - `@govbr-ds/core`: estilos, tokens e utilitários globais. - `@govbr-ds/webcomponents`: implementação dos elementos `br-*` em Web Components. - `@govbr-ds/webcomponents-angular`: wrapper Angular. - `@govbr-ds/webcomponents-react`: wrapper React e entrypoint SSR. - `@govbr-ds/webcomponents-vue`: wrapper Vue. ## Comece em poucos minutos 1. Abra [Comece aqui](./comecar). 2. Escolha sua tecnologia. 3. Instale os pacotes com versões compatíveis. 4. Edite um exemplo no Playground. 5. Use um quickstart como referência de aplicação. ## Princípios técnicos - API baseada em padrões da plataforma web. - Uma implementação compartilhada entre frameworks. - HTML nativo, semântica e teclado como base. - Documentação gerada da mesma API publicada. - Customização explícita por tokens, slots e CSS Parts. - Testes consumidores para JavaScript, Angular, React e Vue. ## Status da versão 1.x A versão 1.x dos Web Components não recebe mais novos desenvolvimentos, encontrando-se exclusivamente em modo de manutenção. Recomendamos a migração para a versão 2.x, que oferece melhor integração com tecnologias modernas e novos recursos. Caso precise consultar o histórico, acesse nossa [página de releases](https://gitlab.com/govbr-ds/bibliotecas/wbc/govbr-ds-wbc/-/releases) e busque pelas versões 1.x. --- ## Quickstarts import quickstarts from '@site/src/data/quickstarts.json' Os quickstarts são aplicações consumidoras completas. Use esta documentação para consultar a API e os exemplos curtos; use o quickstart da sua tecnologia para ver instalação, navegação, eventos, formulários e build funcionando em conjunto. Os READMEs dos quickstarts resumem os requisitos do projeto utilizado. Atualmente, os wrappers requerem Angular 14+, React 18 ou 19 e Vue `>=3.4.38 <4.0.0`; os Web Components usam ES2020, Custom Elements e Shadow DOM. Tecnologia Pacote principal Recursos {quickstarts.map((quickstart) => ( {quickstart.label} {quickstart.package} Demonstração Código-fonte ))} ## Como começar 1. Escolha a tecnologia na tabela. 2. Clone o repositório indicado. 3. Execute `pnpm install` no quickstart. 4. Para configurar dependências locais, consulte a [documentação oficial do `pnpm link`](https://pnpm.io/cli/link). 5. Use o comando local informado no README do projeto. 6. Consulte os [guias de frameworks](/docs/frameworks/) para propriedades, eventos, formulários, SSR e particularidades da integração. ## Qual projeto escolher - **JavaScript:** integração direta, eventos DOM e aplicações sem wrapper. - **Angular:** componentes standalone e Reactive Forms. - **React:** componentes React tipados, callbacks e React Hook Form. - **Vue:** Composition API, eventos e `v-model`. ## Responsabilidades - O [Padrão Digital de Governo](https://www.gov.br/ds/) é a fonte das diretrizes de design, padrões e acessibilidade. - Este site é a fonte da API e do comportamento da implementação Web Components. - Cada README deve declarar diretamente a versão mínima do framework ou runtime utilizado. - Os quickstarts validam os pacotes como aplicações externas reais. --- ## Segurança import Security from '@site/../../SECURITY.md' --- ## All Component Events import ComponentStatusTag from '@site/src/components/ComponentStatusTag'; # All Component Events ## br-breadcrumb ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | ## br-breadcrumb-item ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------------- | -------------------------------------------------------- | ----------- | ---------- | | `brCrumbPropsChange` | Protocolo compatível com o listener atual do breadcrumb. | --- | true | ## br-carousel ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brCarouselAutoplayPause` | Evento canônico emitido quando a reprodução automática é pausada. | --- | true | | `brCarouselAutoplayStart` | Evento canônico emitido quando a reprodução automática começa. | --- | true | | `brCarouselPageChange` | Evento canônico emitido quando o slide ativo muda. | --- | true | | `brDidAutoPlayPause` | Emitido quando a reprodução automática é pausada. | --- | true | | `brDidAutoPlayStart` | Emitido quando a reprodução automática é iniciada ou retomada. | --- | true | | `brDidPageChange` | Emitido quando o slide ativo muda. Disparado por clique nos botões de navegação, clique no indicador de step, gesto swipe (apenas em mobile, breakpoint < 576px) ou avanço automático. `activePage` é 1-based: o primeiro slide emite `1`, o segundo `2`, e assim por diante. | --- | true | ## br-checkbox ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------------------------------------------- | ------------------------------------------------------------- | --------------------------------------------------- | ---------- | | `brCheckboxValidationChange` | Emitido ao iniciar e concluir a validação customizada. | --- | true | | `checkedChange` | Disparado depois que o valor do `checked` foi alterado. | Use `input`/`change` e leia `event.target.checked`. | true | | `indeterminateChange` | Disparado depois que o valor do `indeterminate` foi alterado. | --- | true | ## br-collapse ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------------------------------------------- | ------------------------------------ | ---------------------- | ---------- | | `brCollapseClose` | Evento canônico emitido ao recolher. | --- | true | | `brCollapseOpen` | Evento canônico emitido ao expandir. | --- | true | | `brDidClose` | | Use `brCollapseClose`. | true | | `brDidOpen` | | Use `brCollapseOpen`. | true | ## br-cookiebar ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brCookiebarAccept` | Sinal emitido quando o usuário clica em Aceitar. Não carrega payload — ouça `brCookiebarResponse` para obter o estado completo de consentimento. | --- | true | | `brCookiebarClose` | Emitido quando o painel recolhe para modo default. | --- | true | | `brCookiebarHide` | Emitido quando o componente é ocultado (`show` → false). | --- | true | | `brCookiebarOpen` | Emitido quando o painel expande para modo open. | --- | true | | `brCookiebarPolicyClick` | Emitido quando o usuário clica no botão secundário no modo opt-in (`allOptOut=false`). O consumidor é responsável por navegar para a página de Política de Cookies. | --- | true | | `brCookiebarReject` | Sinal emitido quando o usuário clica em "Rejeitar não obrigatórios". Não carrega payload — ouça `brCookiebarResponse` para obter o estado completo de consentimento. | --- | true | | `brCookiebarResponse` | Emitido após `brCookiebarAccept` ou `brCookiebarReject`, com o estado final de consentimento. É o único evento que carrega `CookiebarOutputData` — use-o para persistir o consentimento (localStorage, cookie HTTP, API etc.). Não é disparado durante interações com checkboxes e switches internos. | --- | true | | `brCookiebarShow` | Emitido quando o componente se torna visível (`show` → true). | --- | true | ## br-cookiebar-cookie ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------------- | -------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brCookiebarCookieChange` | Emitido ao ligar/desligar o switch. Borbulha até o `br-cookiebar-group` pai para recalcular o estado do grupo. | --- | true | ## br-cookiebar-group ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brCookiebarGroupChange` | Emitido quando o estado de seleção do grupo muda (por interação do usuário ou propagação). O `br-cookiebar` pai escuta este evento para recalcular o checkbox "Selecionar todos". | --- | true | | `brCookiebarGroupToggle` | Emitido ao expandir ou recolher a lista de cookies do grupo. | --- | true | ## br-cookiebar-link ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | ## br-cookiebar-note-group ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------------- | ---------------------------------------- | ----------- | ---------- | | `brCookiebarNoteGroupToggle` | Emitido ao expandir ou recolher a seção. | --- | true | ## br-crumb ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ----------- | ---------- | | `brCrumbPropsChange` | Evento disparado quando as propriedades do crumb mudam. O componente pai (br-breadcrumb) escuta este evento para se atualizar. | --- | true | ## br-date-picker ### Eventos | Evento | Descrição | Depreciação | Propagação | | ----------------- | -------------------------------------------------------------- | ----------- | ---------- | | `dateStateChange` | Evento emitido quando a data de referência ou a seleção mudam. | --- | true | ## br-datetime-input ### Eventos | Evento | Descrição | Depreciação | Propagação | | ----------------- | --------------------------------------------------------------- | ----------- | ---------- | | `dateStateChange` | Emite quando o valor é alterado via input ou parsing. | --- | true | | `togglePicker` | Solicita ao componente pai a alternância da abertura do picker. | --- | true | ## br-datetime-picker ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------- | ---------- | | `brDatetimePickerValidationChange` | Emitido ao iniciar e concluir a validação customizada. | --- | true | | `dateStateChange` | Evento público emitido quando a data de referência ou a seleção mudam. | --- | true | | `valueChange` | Evento emitido quando o valor selecionado muda. | Use `input`/`change` e leia `event.target.value`. | true | ## br-dropdown ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------------------------------------------------- | ---------------------------------------------------- | --------------------------- | ---------- | | `brDidClose` | Emitido quando o dropdown fecha. | --- | true | | `brDidOpen` | Emitido quando o dropdown abre. | --- | true | | `brDropdownChange` | | Use `brDropdownOpenChange`. | true | | `brDropdownOpenChange` | Evento canônico emitido quando o estado aberto muda. | --- | true | ## br-footer-item ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | ## br-footer-logo ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | ## br-footer-social ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | ## br-header ### Eventos | Evento | Descrição | Depreciação | Propagação | | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brHeaderCompactChange` | Evento canônico emitido quando o modo compacto muda. | --- | true | | `brMenuToggle` | Evento disparado para alternar o estado de um menu associado. | --- | true | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | | `headerCompactChange` | Evento disparado quando o cabeçalho entra ou sai do modo compacto. O evento contém os detalhes do estado compacto e o ID do componente pai. | --- | true | | `headerWidthChange` | Evento disparado para indicar qual lista deve encolher primeiro. O evento contém os detalhes do ID do componente pai e o nome da lista. | --- | true | ## br-header-function ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | ## br-header-link ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | ## br-header-list ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------- | ------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `headerListFocused` | Evento disparado quando a lista recebe foco. O evento envia o ID do componente. | --- | true | | `headerListUpdate` | Evento disparado para indicar qual lista deve encolher primeiro. O evento envia o ID do componente pai e o nome da lista. | --- | true | ## br-header-logo ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | ## br-input ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ---------- | | `brClear` | Emitted when the input clear button action is triggered. | --- | true | | `brInputValidationChange` | Informa o início e o resultado do validator, inclusive quando ele consulta um serviço remoto. O `detail` contém `validating`, `valid` e `message`; escrita programática e reset não representam interação do usuário. | --- | true | | `valueChange` | Valor atualizado do input | Use o evento nativo `input` e leia `event.target.value`. | true | ## br-item ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | ---------- | | `brDidClick` | | Use `brItemClick`. | true | | `brDidSelect` | | Use `brItemSelect`. | true | | `brItemClick` | Evento canônico emitido quando o item com comportamento de botão é acionado. | --- | true | | `brItemSelect` | Evento canônico emitido quando a seleção muda. | --- | true | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | ## br-link ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | ---------- | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | | `brSpaNavigate` | | Use `brNavigate`. | true | ## br-loading ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brDidHide` | Notifica que o componente foi ocultado. | --- | true | | `brDidShow` | Notifica que o componente foi exibido. | --- | true | | `brIndeterminateStateChange` | Notifica mudança do estado lógico no modo `spinner`. | --- | true | | `brLoadingCancel` | Notifica 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 | | `brLoadingChange` | Notifica mudança de progresso no modo `progress`. | --- | true | | `brLoadingComplete` | Notifica conclusão do progresso no modo `progress`. | --- | true | | `brLoadingHide` | Evento canônico emitido quando o loading é ocultado. | --- | true | | `brLoadingReset` | Notifica reinício do progresso no modo `progress`. | --- | true | | `brLoadingShow` | Evento canônico emitido quando o loading é exibido. | --- | true | ## br-menu ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | ---------- | | `brMenuOpenChange` | Evento canônico emitido quando o menu abre ou fecha. `detail.open` contém o estado concluído e `detail.sourceId` identifica a instância pelo `id` ou `customId`. | --- | true | | `brMenuStateChange` | Evento emitido quando o menu abre ou fecha. | Use `brMenuOpenChange`. | true | ## br-menu-header ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------- | --------------------------------------------- | ----------- | ---------- | | `brMenuToggle` | Evento emitido para alternar o estado do menu | --- | true | ## br-menu-item ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | ## br-menu-link ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | ---------- | | `brLinkClick` | Evento emitido quando o link externo é clicado. | Use `brMenuLinkClick`. | true | | `brMenuLinkClick` | Evento canônico emitido quando o link externo é clicado. | --- | true | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | ## br-menu-list ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------- | -------------------------------------------------------------------------------------- | ----------- | ---------- | | `folderToggled` | Emitido quando um folder é expandido ou recolhido no nível 0 (comportamento acordeão). | --- | true | | `navigateToSubmenu` | Emitido quando navegando para um submenu nos níveis 1+ (comportamento drill-down). | --- | true | ## br-menu-logo ### Eventos | Evento | Descrição | Depreciação | Propagação | | ----------------- | --------- | ----------- | ---------- | | `brMenuLogoError` | | --- | true | ## br-menu-social ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | ---------- | | `brMenuSocialClick` | Evento canônico emitido quando o link de rede social é clicado. | --- | true | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | | `brSocialClick` | Evento emitido quando o link de rede social é clicado. | Use `brMenuSocialClick`. | true | ## br-message ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------------------------------------------- | ---------------------------------------------------- | --------------------- | ---------- | | `brDidClose` | | Use `brMessageClose`. | true | | `brMessageClose` | Evento canônico emitido quando a mensagem é fechada. | --- | true | ## br-modal ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brModalBeforeClose` | Evento emitido antes do fechamento do modal (quando o botão X é clicado). Se autoClose está desativado, o desenvolvedor deve fechar manualmente o modal após este evento. Se autoClose está ativado, o modal fecha automaticamente após este evento. | --- | true | | `brModalClose` | Evento emitido após o modal ser fechado (quando `show` muda de `true` para `false`). | --- | true | | `brModalOpen` | Evento emitido quando o modal é aberto (quando `show` muda de `false` para `true`). | --- | true | | `brModalOpened` | Evento emitido após o modal estar completamente aberto e com o foco estabilizado dentro dele. Complementa `brModalOpen` (que dispara imediatamente ao abrir): use `brModalOpened` quando precisar interagir com o modal já pronto. | --- | true | ## br-notification ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------------- | -------------------------------------------------------------------- | ----------- | ---------- | | `brNotificationClose` | Informa que o painel foi fechado. | --- | true | | `brNotificationItemClick` | Expõe a interação com um item da lista. | --- | true | | `brNotificationOpen` | Informa que o painel foi aberto. | --- | true | | `brNotificationTabChange` | Informa troca de aba quando o componente possuir navegação por tabs. | --- | true | | `brOpenChange` | Informa a mudança de estado aberto/fechado do painel. | --- | true | ## br-notification-header ### Eventos | Evento | Descrição | Depreciação | Propagação | | --------------------------- | ------------------------------------------------------ | ----------- | ---------- | | `brNotificationHeaderClose` | Solicita o fechamento do painel a partir do cabeçalho. | --- | true | ## br-notification-item ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------------------- | --------------------------------------- | ----------- | ---------- | | `brNotificationItemRead` | Informa mudança de estado para lido. | --- | true | | `brNotificationItemSelect` | Informa seleção ou acionamento do item. | --- | true | ## br-pagination ### Eventos | Evento | Descrição | Depreciação | Propagação | | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brPaginationPageChange` | Evento canônico para iniciar o carregamento de uma página. O `detail` contém `{ page }`; o evento não é cancelável. | --- | true | | `brPaginationPerPageChange` | Evento canônico para iniciar o carregamento de uma nova quantidade de itens. O `detail` contém `{ perPage }`; o evento não é cancelável. | --- | true | | `pageChange` | Solicita uma página por interação do usuário ou pelo método público. Em `controlled`, o evento informa a página solicitada, mas `current` só muda quando a aplicação confirma o resultado. O componente não faz chamadas remotas nem cancela a consulta do consumidor. | --- | true | | `perPageChange` | Solicita uma quantidade de itens por página (variante contextual). Em `controlled`, a aplicação confirma a mudança atribuindo `perPage`. | --- | true | ## br-radio ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------------------------------------------- | ------------------------------------------------------- | --------------------------------------------------- | ---------- | | `brRadioValidationChange` | Emitido ao iniciar e concluir a validação customizada. | --- | true | | `checkedChange` | Disparado depois que o valor do `checked` foi alterado. | Use `input`/`change` e leia `event.target.checked`. | true | ## br-radio-group ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------------------ | -------------------------------------------------------- | ----------- | ---------- | | `brRadioGroupValidationChange` | Emitido ao iniciar e concluir uma validação customizada. | --- | true | ## br-scrim ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------- | ------------------------------ | ----------- | ---------- | | `brScrimClose` | Indica que o scrim foi fechado | --- | true | | `brScrimOpen` | Indica que o scrim foi aberto. | --- | true | ## br-select ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | ---------- | | `brSelectSearch` | Emitido uma vez por edição do campo de busca, inclusive ao limpar a consulta. O `detail` contém `{ query }`; o evento é informativo e não cancelável. A aplicação deve controlar debounce, transporte e ciclo de vida da busca. | --- | true | | `brSelectStateChange` | Evento emitido quando o estado público do select muda. | --- | true | | `brSelectValidationChange` | Informa o início e o resultado de uma validação síncrona ou assíncrona. O `detail` contém `validating`, `valid` e `message`. | --- | true | | `closed` | Emitido quando a lista é fechada. | Use `brSelectStateChange`. | true | | `opened` | Emitido quando a lista é aberta. | Use `brSelectStateChange`. | true | | `optionHover` | Emite a opção que recebeu foco ou hover. | Use a navegação e os eventos de estado atuais. | true | | `valueChange` | Evento emitido quando o valor público do select é alterado. | Use os eventos nativos `input` e `change`. | true | ## br-select-input ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------------------- | ---------------------------------------------------------------------- | ----------- | ---------- | | `brSelectInputActionClick` | Evento emitido quando o usuário aciona o ícone de abertura/fechamento. | --- | true | | `brSelectInputClick` | Evento emitido quando o usuário clica no campo do select. | --- | true | | `brSelectInputFocus` | Evento emitido quando o campo interno recebe foco. | --- | true | | `brSelectInputValueChange` | Evento emitido quando o valor digitado no campo de busca muda. | --- | true | ## br-select-option ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------- | ---------- | | `brSelectOptionPropsChange` | Evento legado emitido quando as propriedades da opção são alteradas. | Use `brSelectOptionStateChange`. | true | | `brSelectOptionStateChange` | Evento emitido quando o estado da opção muda. | --- | true | ## br-sign-in ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brNavigate` | Evento cancelável emitido em `navigation-mode="event"` para cliques primários sem modificadores em links `_self`. Chame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA. | --- | true | ## br-skip-link ### Eventos | Evento | Descrição | Depreciação | Propagação | | ----------------------------------------------------------------- | ---------------------------------------------------- | ------------------------- | ---------- | | `brDidHide` | | Use `brSkipLinkHide`. | true | | `brDidShow` | | Use `brSkipLinkShow`. | true | | `brSkipLinkHide` | Evento canônico emitido ao ocultar o componente. | --- | true | | `brSkipLinkNavigate` | Evento canônico emitido quando um destino é ativado. | --- | true | | `brSkiplinkNavigation` | | Use `brSkipLinkNavigate`. | true | | `brSkipLinkShow` | Evento canônico emitido ao exibir o componente. | --- | true | ## br-skiplink-item ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------------------------------------------------- | -------------------------------------------------- | ----------------------------- | ---------- | | `brSkipLinkItemActivate` | Evento canônico emitido quando o item é ativado. | --- | true | | `brSkiplinkItemClick` | | Use `brSkipLinkItemActivate`. | true | | `brSkipLinkItemFocus` | Evento canônico emitido quando o item recebe foco. | --- | true | | `brSkiplinkItemFocus` | | Use `brSkipLinkItemFocus`. | true | ## br-slider ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------------------- | ---------- | | `brDidChangeValue` | Disparado após alteração do valor da alça inicial. | Use o evento nativo `input`. | true | | `brDidChangeValueEnd` | Disparado após alteração do valor da alça final (modo composto). | Use o evento nativo `input` e leia `event.target.rangeValue`. | true | | `brSliderValidationChange` | Emitido ao iniciar e concluir a validação customizada. | --- | true | ## br-step ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------- | ------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brStepChange` | Emite um evento quando o step ativo muda. O evento carrega o índice do novo step ativo (0-based). | --- | true | ## br-switch ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------------------------------------------- | ------------------------------------------------------- | --------------------------------------------------- | ---------- | | `brSwitchValidationChange` | Emitido ao iniciar e concluir a validação customizada. | --- | true | | `checkedChange` | Disparado depois que o valor do `checked` foi alterado. | Use `input`/`change` e leia `event.target.checked`. | true | ## br-tab ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------- | ----------------------------------------- | ----------- | ---------- | | `brTabChange` | Evento disparado quando um tab é ativado. | --- | true | ## br-tab-item ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brTabItemPropsChange` | Evento disparado quando as propriedades do tab-item mudam. O componente pai (br-tab) escuta este evento para atualizar a navegação. | --- | true | ## br-table-cell ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brAlignmentChange` | Evento customizado emitido quando o alinhamento é alterado, permitindo que a célula reaja dinamicamente a mudanças nos tokens de alinhamento. | --- | true | | `brOverflowChange` | Evento customizado emitido quando a configuração de overflow é alterada, permitindo que a célula reaja dinamicamente a mudanças no token de overflow. | --- | true | ## br-table-header-cell ### Eventos | Evento | Descrição | Depreciação | Propagação | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------- | ---------- | | `brAlignmentChange` | Evento customizado emitido quando o alinhamento é alterado, permitindo que a célula de cabeçalho reaja dinamicamente a mudanças nos tokens de alinhamento. | --- | true | | `brColumnWidthChange` | Evento customizado emitido quando a largura da coluna é alterada, permitindo que as células reajam dinamicamente a mudanças no layout. | --- | true | | `brOverflowChange` | Evento customizado emitido quando a configuração de overflow é alterada, permitindo que a célula de cabeçalho reaja dinamicamente a mudanças no token de overflow. | --- | true | ## br-table-row ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brAlignmentChange` | Evento customizado emitido quando o alinhamento é alterado, permitindo que as células reajam dinamicamente a mudanças nos tokens de alinhamento. | --- | true | | `brOverflowChange` | Evento customizado emitido quando a configuração de overflow é alterada, permitindo que as células reajam dinamicamente a mudanças no token de overflow. | --- | true | ## br-tag ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------------- | ---------- | | `brTagValidationChange` | Emitido ao iniciar e concluir a validação customizada. | --- | true | | `radioSelected` | Evento emitido quando a tag é selecionada. | Use `input`/`change` e leia `event.target.selected`. | true | ## br-textarea ### Eventos | Evento | Descrição | Depreciação | Propagação | | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | ---------- | | `brTextareaValidationChange` | Informa o início e o resultado do validator; o `detail` contém `validating`, `valid` e `message`. | --- | true | | `valueChange` | Valor atualizado do textarea | Use o evento nativo `input` e leia `event.target.value`. | true | ## br-time-picker ### Eventos | Evento | Descrição | Depreciação | Propagação | | ----------------- | ------------------------------------------------------------------------ | ----------- | ---------- | | `dateStateChange` | Evento emitido quando a data de referência ou o valor selecionado mudam. | --- | true | ## br-tooltip ### Eventos | Evento | Descrição | Depreciação | Propagação | | ------------ | ------------------------------- | ----------- | ---------- | | `brDidClose` | Emitido quando o tooltip fecha. | --- | true | | `brDidOpen` | Emitido quando o tooltip abre. | --- | true | ## br-upload ### Eventos | Evento | Descrição | Depreciação | Propagação | | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | ---------- | | `brRemove` | Evento emitido quando um arquivo da lista `uploadFiles` (externos) é removido pelo usuário. O objeto emitido contém os dados do arquivo removido. | Use `brUploadRemove`. | true | | `brUploadCancel` | Emitido quando o usuário fecha a caixa de seleção de arquivos sem escolher nada. | --- | true | | `brUploadError` | Emitido quando o `uploadHandler` falha ao enviar um arquivo. | --- | true | | `brUploadProgress` | Emitido quando o `uploadHandler` informa o progresso de um arquivo. | --- | true | | `brUploadRemove` | Evento canônico emitido quando um arquivo existente é removido. | --- | true | | `brUploadStart` | Emitido antes de o `uploadHandler` processar um arquivo. | --- | true | | `brUploadSuccess` | Emitido quando o `uploadHandler` conclui um arquivo. | --- | true | | `brUploadValidationChange` | Emitido ao iniciar e concluir a validação customizada. O `detail` contém `validating`, `valid` e `message`. | --- | true | | `selectedFilesChange` | Emitido quando a lista de arquivos selecionados muda. | Use `input`/`change` e leia `event.target.files`. | true | ## br-wizard ### Eventos | Evento | Descrição | Depreciação | Propagação | | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------- | | `brWizardBeforeStepChange` | Evento emitido ANTES de mudar de etapa (permite validação e cancelamento). Comportamento: - Disparado apenas ao AVANÇAR (targetStep > currentStep) - Não é disparado ao VOLTAR (targetStep < currentStep) - Funciona tanto para cliques nos botões quanto para cliques diretos nos steps - Pode ser cancelado com `event.preventDefault()` para bloquear a navegação | --- | true | | `brWizardCancel` | Evento emitido ao cancelar o wizard. | --- | true | | `brWizardComplete` | Evento emitido ao concluir o wizard (última etapa). | --- | true | | `brWizardNavigationBlocked` | Evento emitido quando uma ação é bloqueada (validação falha, progressão linear impedida). Emite uma string indicando o motivo: 'linear-progression' ou 'validation-failed'. Use getCurrentStepIndex() para obter o contexto da etapa atual. | --- | true | | `brWizardStepChange` | Evento emitido APÓS mudar de etapa com sucesso. Este evento é disparado independente da origem da navegação: - Botões "Avançar" ou "Voltar" - Click direto em um step do indicador de progresso - Chamadas programáticas via métodos públicos (goToStep, nextStep, etc) | --- | true | --- ## All Component Methods import ComponentStatusTag from '@site/src/components/ComponentStatusTag'; # All Component Methods ## br-avatar ### Métodos ### setFocus | **Descrição** | Move o foco programaticamente para o avatar. | | :--- | :--- | | **Assinatura** | `setFocus() => Promise` | | **Parâmetros** | --- | ## br-carousel ### Métodos ### getActivePage | **Descrição** | Retorna o número do slide atualmente ativo (1 = primeiro slide, 2 = segundo, …). | | :--- | :--- | | **Assinatura** | `getActivePage() => Promise` | | **Parâmetros** | --- | ### getIsPlaying | **Descrição** | Retorna `true` se a reprodução automática está ativa no momento. | | :--- | :--- | | **Assinatura** | `getIsPlaying() => Promise` | | **Parâmetros** | --- | ### goToPage | **Descrição** | Navega para o slide de número `index` (1 = primeiro slide, 2 = segundo, …).Valores fora do intervalo válido são ignorados. | | :--- | :--- | | **Assinatura** | `goToPage(index: number) => Promise` | | **Parâmetros** | **index**: | ### nextPage | **Descrição** | Avança para o próximo slide. Respeita a prop `isCircular` (ou ativo automaticamente com `autoPlay`). | | :--- | :--- | | **Assinatura** | `nextPage() => Promise` | | **Parâmetros** | --- | ### pause | **Descrição** | Pausa a reprodução automática programaticamente. | | :--- | :--- | | **Assinatura** | `pause() => Promise` | | **Parâmetros** | --- | ### play | **Descrição** | Inicia ou retoma a reprodução automática programaticamente. | | :--- | :--- | | **Assinatura** | `play() => Promise` | | **Parâmetros** | --- | ### previousPage | **Descrição** | Retorna ao slide anterior. Respeita a prop `isCircular` (ou ativo automaticamente com `autoPlay`). | | :--- | :--- | | **Assinatura** | `previousPage() => Promise` | | **Parâmetros** | --- | ## br-carousel-page ### Métodos ### setActive | **Descrição** | Ativa ou desativa o slide. | | :--- | :--- | | **Assinatura** | `setActive(active: boolean) => Promise` | | **Parâmetros** | **active**: | ### setLabel | **Descrição** | Define o label acessível (`aria-label`) do slide.Chamado pelo `br-carousel` pai para aplicar o label gerado automaticamentecom base na posição do slide (ex: `"Slide 1 de 3"`).O `aria-label` declarado diretamente no elemento tem prioridade:se o consumidor definir `aria-label` no HTML ou via `setAttribute`,esse valor será mantido e o parâmetro `defaultLabel` será ignorado. | | :--- | :--- | | **Assinatura** | `setLabel(defaultLabel: string) => Promise` | | **Parâmetros** | **defaultLabel**: - Label de fallback gerado pelo `br-carousel` (ex: `"Slide 2 de 4"`). | ## br-checkbox ### Métodos ### checkValidity | **Descrição** | Retorna `true` se o valor do checkbox for válido, caso contrário `false`.Se o checkbox for inválido, dispara um evento 'invalid'. | | :--- | :--- | | **Assinatura** | `checkValidity() => Promise` | | **Parâmetros** | --- | ### getValidationState | **Descrição** | Retorna um snapshot serializável da Constraint Validation API. | | :--- | :--- | | **Assinatura** | `getValidationState() => Promise` | | **Parâmetros** | --- | ### reportValidity | **Descrição** | Retorna `true` se o valor do checkbox for válido, caso contrário `false`.Se for inválido, exibe a mensagem de erro padrão do navegador. | | :--- | :--- | | **Assinatura** | `reportValidity() => Promise` | | **Parâmetros** | --- | ### setCustomValidity | **Descrição** | Define uma mensagem de validação customizada para o checkbox.Se a mensagem for uma string vazia, o erro customizado é limpo. | | :--- | :--- | | **Assinatura** | `setCustomValidity(message: string) => Promise` | | **Parâmetros** | **message**: | ### setIndeterminate | **Descrição** | Define o estado indeterminado do checkbox. | | :--- | :--- | | **Assinatura** | `setIndeterminate(value: boolean) => Promise` | | **Parâmetros** | **value**: Novo valor para o estado indeterminado. | ### setNumberOfChildren | **Descrição** | Define o número de checkboxes filhos em um grupo de checkboxes. | | :--- | :--- | | **Assinatura** | `setNumberOfChildren(value: number) => Promise` | | **Parâmetros** | **value**: Número de checkboxes filhos. | ### toggleChecked | **Descrição** | Inverte o valor da prop `checked` | | :--- | :--- | | **Assinatura** | `toggleChecked() => Promise` | | **Depreciação** | Atualize a propriedade `checked` diretamente. | | **Parâmetros** | --- | ### validate | **Descrição** | Executa o validator do checkbox e retorna se o valor atual é válido. | | :--- | :--- | | **Assinatura** | `validate() => Promise` | | **Parâmetros** | --- | ## br-collapse ### Métodos ### closeCollapse | **Descrição** | Fecha o collapse programaticamente. | | :--- | :--- | | **Assinatura** | `closeCollapse() => Promise` | | **Depreciação** | Atualize a propriedade `open`. | | **Parâmetros** | --- | ### openCollapse | **Descrição** | Abre o collapse programaticamente. | | :--- | :--- | | **Assinatura** | `openCollapse() => Promise` | | **Depreciação** | Atualize a propriedade `open`. | | **Parâmetros** | --- | ### toggle | **Descrição** | Alterna o estado aberto.O elemento também redispara o evento nativo `toggle` no host; essa ocorrência é sintética (`isTrusted === false`). | | :--- | :--- | | **Assinatura** | `toggle() => Promise` | | **Parâmetros** | --- | ## br-cookiebar ### Métodos ### close | **Descrição** | Oculta o cookiebar. | | :--- | :--- | | **Assinatura** | `close() => Promise` | | **Parâmetros** | --- | ### getSelectedCookies | **Descrição** | Retorna o JSON com o estado atual de seleção de todos os grupos e cookies. | | :--- | :--- | | **Assinatura** | `getSelectedCookies() => Promise` | | **Parâmetros** | --- | ### openDefault | **Descrição** | Exibe o cookiebar no modo `default` (barra inferior). | | :--- | :--- | | **Assinatura** | `openDefault() => Promise` | | **Parâmetros** | --- | ### openPanel | **Descrição** | Exibe o cookiebar diretamente no modo `open` (painel de tela cheia). | | :--- | :--- | | **Assinatura** | `openPanel() => Promise` | | **Parâmetros** | --- | ## br-cookiebar-group ### Métodos ### getState | **Descrição** | Retorna o estado atual de seleção do grupo:- `true`: todos os cookies opt-out estão selecionados.- `false`: nenhum cookie opt-out está selecionado.- `'indeterminate'`: seleção parcial. | | :--- | :--- | | **Assinatura** | `getState() => Promise` | | **Parâmetros** | --- | ## br-datetime-picker ### Métodos ### checkValidity | **Descrição** | Permite que consumidores acionem validação nativa do formulário via host. | | :--- | :--- | | **Assinatura** | `checkValidity() => Promise` | | **Parâmetros** | --- | ### clear | **Descrição** | Limpa valor e intervalo selecionados. | | :--- | :--- | | **Assinatura** | `clear() => Promise` | | **Parâmetros** | --- | ### close | **Descrição** | Fecha o picker. | | :--- | :--- | | **Assinatura** | `close() => Promise` | | **Parâmetros** | --- | ### focusInput | **Descrição** | Move o foco para o input nativo interno. | | :--- | :--- | | **Assinatura** | `focusInput() => Promise` | | **Parâmetros** | --- | ### getRange | **Descrição** | Retorna o intervalo de datas selecionado quando em modo `selectionMode="range"`. | | :--- | :--- | | **Assinatura** | `getRange() => Promise<{ start: Date \| null; end: Date \| null; } \| null>` | | **Parâmetros** | --- | ### getValidationState | **Descrição** | Retorna um snapshot serializável da Constraint Validation API. | | :--- | :--- | | **Assinatura** | `getValidationState() => Promise` | | **Parâmetros** | --- | ### getValue | **Descrição** | Retorna uma cópia do valor selecionado atualmente. | | :--- | :--- | | **Assinatura** | `getValue() => Promise` | | **Parâmetros** | --- | ### isOpen | **Descrição** | Consulta se o picker está atualmente aberto. | | :--- | :--- | | **Assinatura** | `isOpen() => Promise` | | **Parâmetros** | --- | ### open | **Descrição** | Abre o picker quando o componente estiver habilitado. | | :--- | :--- | | **Assinatura** | `open() => Promise` | | **Parâmetros** | --- | ### reportValidity | **Descrição** | Permite exibir mensagens nativas de validação no host. | | :--- | :--- | | **Assinatura** | `reportValidity() => Promise` | | **Parâmetros** | --- | ### resetToInitial | **Descrição** | Restaura o estado inicial atualmente registrado para reset. | | :--- | :--- | | **Assinatura** | `resetToInitial() => Promise` | | **Parâmetros** | --- | ### setCustomValidity | **Descrição** | Define ou limpa uma mensagem de validade customizada. | | :--- | :--- | | **Assinatura** | `setCustomValidity(message: string) => Promise` | | **Parâmetros** | **message**: | ### setDisabledDates | **Descrição** | Define programaticamente as datas desabilitadas por meio de array.Útil quando o componente é usado via HTML e o consumidor precisa enviaruma lista tipada em runtime. | | :--- | :--- | | **Assinatura** | `setDisabledDates(dates: DatetimePickerDisabledDate[] \| null) => Promise` | | **Parâmetros** | **dates**: - Lista de datas (Date\|string) a bloquear. | ### setRange | **Descrição** | Define intervalo de datas de forma imperativa, forçando modo date e selectionMode range. | | :--- | :--- | | **Assinatura** | `setRange(start: Date \| string \| null, end: Date \| string \| null) => Promise` | | **Parâmetros** | **start**: **end**: | ### setValue | **Descrição** | Define o valor atual de forma imperativa aceitando Date, string serializada ou null. | | :--- | :--- | | **Assinatura** | `setValue(value: Date \| string \| null) => Promise` | | **Parâmetros** | **value**: | ### toggle | **Descrição** | Alterna o estado de abertura do picker. | | :--- | :--- | | **Assinatura** | `toggle() => Promise` | | **Parâmetros** | --- | ### validate | **Descrição** | Executa o validator do picker e retorna se a seleção atual é válida. | | :--- | :--- | | **Assinatura** | `validate() => Promise` | | **Parâmetros** | --- | ## br-dropdown ### Métodos ### close | **Descrição** | Fecha o dropdown e mantém o formato de retorno legado. | | :--- | :--- | | **Assinatura** | `close() => Promise<{ isOpen: boolean; }>` | | **Parâmetros** | --- | ### hide | **Descrição** | Esconde o dropdown.Define a propriedade `isOpen` como falsa e retorna o novo estado.Este método pode ser chamado externamente. | | :--- | :--- | | **Assinatura** | `hide() => Promise<{ isOpen: boolean; }>` | | **Depreciação** | Use `close`. | | **Parâmetros** | --- | ### open | **Descrição** | Abre o dropdown.Define a propriedade `isOpen` como verdadeira e retorna o novo estado.Este método pode ser chamado externamente. | | :--- | :--- | | **Assinatura** | `open() => Promise<{ isOpen: boolean; }>` | | **Parâmetros** | --- | ### setFocus | **Descrição** | Define o foco no elemento interno do componente.Este método pode ser chamado externamente para garantir que o foco seja aplicado ao elemento correto. | | :--- | :--- | | **Assinatura** | `setFocus() => Promise` | | **Parâmetros** | --- | ## br-header ### Métodos ### resetHeaderList | **Descrição** | Reinicializa o estado das listas do cabeçalho, disparando o evento de redimensionamento.Pode ser chamado externamente para forçar a atualização das listas. | | :--- | :--- | | **Assinatura** | `resetHeaderList() => Promise` | | **Parâmetros** | --- | ## br-header-list ### Métodos ### closeList | **Descrição** | Fecha a lista. | | :--- | :--- | | **Assinatura** | `closeList() => Promise` | | **Parâmetros** | --- | ### isListOpen | **Descrição** | Verifica se a lista está aberta. | | :--- | :--- | | **Assinatura** | `isListOpen() => Promise` | | **Parâmetros** | --- | ### openList | **Descrição** | Abre a lista. | | :--- | :--- | | **Assinatura** | `openList() => Promise` | | **Parâmetros** | --- | ## br-input ### Métodos ### checkValidity | **Descrição** | Retorna `true` se o valor do input for válido, caso contrário `false`.Se o input for inválido, dispara um evento 'invalid'. | | :--- | :--- | | **Assinatura** | `checkValidity() => Promise` | | **Parâmetros** | --- | ### getValidationState | **Descrição** | Retorna um snapshot serializável da Constraint Validation API. | | :--- | :--- | | **Assinatura** | `getValidationState() => Promise` | | **Parâmetros** | --- | ### reportValidity | **Descrição** | Retorna `true` se o valor do input for válido, caso contrário `false`.Se o input for inválido, exibe uma mensagem de erro padrão do navegador. | | :--- | :--- | | **Assinatura** | `reportValidity() => Promise` | | **Parâmetros** | --- | ### select | **Descrição** | Seleciona todo o texto do controle nativo, conforme HTMLInputElement.select(). | | :--- | :--- | | **Assinatura** | `select() => Promise` | | **Parâmetros** | --- | ### setCustomValidity | **Descrição** | Define uma mensagem de validação customizada para o input.Se a mensagem for uma string vazia, o erro customizado é limpo. | | :--- | :--- | | **Assinatura** | `setCustomValidity(message: string) => Promise` | | **Parâmetros** | **message**: - Mensagem de erro customizada ou string vazia para limpar | ### setRangeText | **Descrição** | Substitui um intervalo de texto usando a API nativa do input. | | :--- | :--- | | **Assinatura** | `setRangeText(replacement: string, start?: number, end?: number, selectionMode?: SelectionMode) => Promise` | | **Parâmetros** | **replacement**: **start**: **end**: **selectionMode**: | ### setSelectionRange | **Descrição** | Define o intervalo selecionado no controle nativo. | | :--- | :--- | | **Assinatura** | `setSelectionRange(start: number, end: number, direction?: "forward" \| "backward" \| "none") => Promise` | | **Parâmetros** | **start**: **end**: **direction**: | ### showPicker | **Descrição** | Abre o picker nativo quando o navegador e o tipo do input oferecem essa API. | | :--- | :--- | | **Assinatura** | `showPicker() => Promise` | | **Parâmetros** | --- | ### stepDown | **Descrição** | Decrementa o valor numérico pelo step nativo. | | :--- | :--- | | **Assinatura** | `stepDown(n?: number) => Promise` | | **Parâmetros** | **n**: | ### stepUp | **Descrição** | Incrementa o valor numérico pelo step nativo. | | :--- | :--- | | **Assinatura** | `stepUp(n?: number) => Promise` | | **Parâmetros** | **n**: | ### validate | **Descrição** | Executa a regra customizada e retorna se o campo está válido.Se o validator for assíncrono, aguarda a resposta e ignora resultadosantigos quando uma execução posterior já começou. | | :--- | :--- | | **Assinatura** | `validate() => Promise` | | **Parâmetros** | --- | ## br-item ### Métodos ### activate | **Descrição** | Ativa o item programaticamente, simulando um clique na superfície.Utilizado pelo br-list para tratar Enter e Espaço via teclado, einternamente pelo próprio item quando standalone (fora de br-list). | | :--- | :--- | | **Assinatura** | `activate() => Promise` | | **Parâmetros** | --- | ### setFocus | **Descrição** | Define o foco no elemento interno do componente.Este método pode ser chamado externamente para garantir que o foco seja aplicado ao elemento correto. | | :--- | :--- | | **Assinatura** | `setFocus() => Promise` | | **Parâmetros** | --- | ### setTabIndex | **Descrição** | Define o tabIndex do elemento interno.Utilizado pelo br-list para implementar o padrão roving tabindex,garantindo que apenas um item por vez seja alcançável via Tab. | | :--- | :--- | | **Assinatura** | `setTabIndex(value: number) => Promise` | | **Parâmetros** | **value**: | ## br-list ### Métodos ### focusFirstItem | **Descrição** | Move o foco para o primeiro item navegável da lista.API pública para componentes que abrem a lista programaticamente(ex.: `br-dropdown`), evitando acesso direto ao `br-item`. | | :--- | :--- | | **Assinatura** | `focusFirstItem() => Promise` | | **Parâmetros** | --- | ## br-loading ### Métodos ### complete | **Descrição** | Define o progresso como concluído. | | :--- | :--- | | **Assinatura** | `complete() => Promise<{ value: number; }>` | | **Parâmetros** | --- | ### hide | **Descrição** | Oculta o componente. | | :--- | :--- | | **Assinatura** | `hide() => Promise<{ visible: boolean; }>` | | **Parâmetros** | --- | ### incrementValue | **Descrição** | Soma um valor ao progresso atual. | | :--- | :--- | | **Assinatura** | `incrementValue(step?: number) => Promise<{ value: number; }>` | | **Parâmetros** | **step**: Incremento aplicado. | ### reset | **Descrição** | Reinicia o progresso e exibe o componente. | | :--- | :--- | | **Assinatura** | `reset() => Promise<{ value: number; }>` | | **Parâmetros** | --- | ### setValue | **Descrição** | Define o valor do progresso. | | :--- | :--- | | **Assinatura** | `setValue(value: number) => Promise<{ value: number; }>` | | **Parâmetros** | **value**: Valor desejado. | ### show | **Descrição** | Exibe o componente. | | :--- | :--- | | **Assinatura** | `show() => Promise<{ visible: boolean; }>` | | **Parâmetros** | --- | ## br-menu ### Métodos ### close | **Descrição** | Fecha o painel do menu.Pode ser chamado externamente: `menuEl.close()`. | | :--- | :--- | | **Assinatura** | `close() => Promise` | | **Parâmetros** | --- | ### open | **Descrição** | Abre o painel do menu.Pode ser chamado externamente: `menuEl.open()`. | | :--- | :--- | | **Assinatura** | `open() => Promise` | | **Parâmetros** | --- | ### toggle | **Descrição** | Alterna o estado do painel do menu (abre se fechado, fecha se aberto).Pode ser chamado externamente: `menuEl.toggle()`. | | :--- | :--- | | **Assinatura** | `toggle() => Promise` | | **Parâmetros** | --- | ## br-modal ### Métodos ### close | **Descrição** | Método público para fechar o modal | | :--- | :--- | | **Assinatura** | `close() => Promise` | | **Parâmetros** | --- | ### open | **Descrição** | Método público para abrir o modal | | :--- | :--- | | **Assinatura** | `open() => Promise` | | **Parâmetros** | --- | ### requestClose | **Descrição** | Solicita fechamento e permite cancelamento pelo evento `cancel`. | | :--- | :--- | | **Assinatura** | `requestClose() => Promise` | | **Parâmetros** | --- | ### showModal | **Descrição** | Abre o modal usando a nomenclatura de `HTMLDialogElement`. | | :--- | :--- | | **Assinatura** | `showModal() => Promise` | | **Parâmetros** | --- | ### toggle | **Descrição** | Método público para alternar a visibilidade do modal | | :--- | :--- | | **Assinatura** | `toggle() => Promise` | | **Parâmetros** | --- | ## br-notification ### Métodos ### focusFirstItem | **Descrição** | Move o foco para o primeiro item interativo da lista. | | :--- | :--- | | **Assinatura** | `focusFirstItem() => Promise` | | **Parâmetros** | --- | ### focusTrigger | **Descrição** | Move o foco de volta para o acionador. | | :--- | :--- | | **Assinatura** | `focusTrigger() => Promise` | | **Parâmetros** | --- | ### hide | **Descrição** | Fecha o painel de notificações. | | :--- | :--- | | **Assinatura** | `hide(reason?: NotificationCloseReason) => Promise` | | **Parâmetros** | **reason**: | ### show | **Descrição** | Abre o painel de notificações. | | :--- | :--- | | **Assinatura** | `show() => Promise` | | **Parâmetros** | --- | ### toggle | **Descrição** | Alterna o estado aberto/fechado. | | :--- | :--- | | **Assinatura** | `toggle() => Promise` | | **Parâmetros** | --- | ## br-notification-item ### Métodos ### callFocus | **Descrição** | Move o foco para o elemento interativo do item. | | :--- | :--- | | **Assinatura** | `callFocus() => Promise` | | **Parâmetros** | --- | ## br-pagination ### Métodos ### goToPage | **Descrição** | Solicita navegação programática para uma página (1-indexada).Em `controlled`, aguarda a confirmação externa para alterar `current`. | | :--- | :--- | | **Assinatura** | `goToPage(page: number) => Promise` | | **Parâmetros** | **page**: | ### setPage | **Descrição** | Define programaticamente a página atual dentro do intervalo permitido. | | :--- | :--- | | **Assinatura** | `setPage(page: number) => Promise` | | **Parâmetros** | **page**: Página desejada (1-indexada). Em `controlled`, emite a solicitação sem alterar `current`. | ## br-radio ### Métodos ### checkValidity | **Descrição** | Retorna `true` se o valor do radio for válido, caso contrário `false`.Se o radio for inválido, dispara um evento 'invalid'. | | :--- | :--- | | **Assinatura** | `checkValidity() => Promise` | | **Parâmetros** | --- | ### getValidationState | **Descrição** | Retorna um snapshot serializável da Constraint Validation API. | | :--- | :--- | | **Assinatura** | `getValidationState() => Promise` | | **Parâmetros** | --- | ### reportValidity | **Descrição** | Retorna `true` se o valor do radio for válido, caso contrário `false`.Se for inválido, exibe a mensagem de erro padrão do navegador. | | :--- | :--- | | **Assinatura** | `reportValidity() => Promise` | | **Parâmetros** | --- | ### setCustomValidity | **Descrição** | Define uma mensagem de validação customizada para o radio.Se a mensagem for uma string vazia, o erro customizado é limpo. | | :--- | :--- | | **Assinatura** | `setCustomValidity(message: string) => Promise` | | **Parâmetros** | **message**: | ### setFocus | **Descrição** | Move o foco para o input radio nativo interno. | | :--- | :--- | | **Assinatura** | `setFocus() => Promise` | | **Parâmetros** | --- | ### toggleChecked | **Descrição** | Inverte o valor da prop `checked` | | :--- | :--- | | **Assinatura** | `toggleChecked() => Promise` | | **Depreciação** | Atualize a propriedade `checked` diretamente. | | **Parâmetros** | --- | ### validate | **Descrição** | Executa o validator do radio e retorna se o valor atual é válido. | | :--- | :--- | | **Assinatura** | `validate() => Promise` | | **Parâmetros** | --- | ## br-radio-group ### Métodos ### checkValidity | **Descrição** | Verifica a validade do grupo. | | :--- | :--- | | **Assinatura** | `checkValidity() => Promise` | | **Parâmetros** | --- | ### getValidationState | **Descrição** | Retorna o snapshot de validade do grupo. | | :--- | :--- | | **Assinatura** | `getValidationState() => Promise` | | **Parâmetros** | --- | ### reportValidity | **Descrição** | Verifica a validade e apresenta a mensagem do grupo. | | :--- | :--- | | **Assinatura** | `reportValidity() => Promise` | | **Parâmetros** | --- | ### setCustomValidity | **Descrição** | Define a mensagem de validade customizada do grupo. | | :--- | :--- | | **Assinatura** | `setCustomValidity(message: string) => Promise` | | **Parâmetros** | **message**: | ### setFocus | **Descrição** | Move o foco para o radio marcado ou para o primeiro radio habilitado. | | :--- | :--- | | **Assinatura** | `setFocus() => Promise` | | **Parâmetros** | --- | ### validate | **Descrição** | Executa o validator do grupo. | | :--- | :--- | | **Assinatura** | `validate() => Promise` | | **Parâmetros** | --- | ## br-scrim ### Métodos ### close | **Descrição** | Método público para esconder o scrim | | :--- | :--- | | **Assinatura** | `close() => Promise` | | **Parâmetros** | --- | ### open | **Descrição** | Método público para exibir o scrim | | :--- | :--- | | **Assinatura** | `open() => Promise` | | **Parâmetros** | --- | ### setScrollThreshold | **Descrição** | Define o limite de rolagem para o fechamento automático do scrim. | | :--- | :--- | | **Assinatura** | `setScrollThreshold(threshold: number) => Promise` | | **Parâmetros** | **threshold**: | ### toggle | **Descrição** | Método público para alternar o estado de exibição do scrim | | :--- | :--- | | **Assinatura** | `toggle() => Promise` | | **Parâmetros** | --- | ### updateSpotlight | **Descrição** | Recalcula manualmente a posição e dimensões da fresta do scrim vazado.Útil quando o elemento alvo muda de posição sem disparar resize ou scroll. | | :--- | :--- | | **Assinatura** | `updateSpotlight() => Promise` | | **Parâmetros** | --- | ## br-select ### Métodos ### checkValidity | **Descrição** | | | :--- | :--- | | **Assinatura** | `checkValidity() => Promise` | | **Parâmetros** | --- | ### clear | **Descrição** | Limpa a seleção atual. | | :--- | :--- | | **Assinatura** | `clear() => Promise` | | **Depreciação** | Use `setValue('')` ou a API de formulário. | | **Parâmetros** | --- | ### close | **Descrição** | Fecha a lista de opções quando o componente está habilitado. | | :--- | :--- | | **Assinatura** | `close() => Promise` | | **Parâmetros** | --- | ### disable | **Descrição** | Desabilita o select e impede novas interações. | | :--- | :--- | | **Assinatura** | `disable() => Promise` | | **Parâmetros** | --- | ### enable | **Descrição** | Habilita o select para interação do usuário. | | :--- | :--- | | **Assinatura** | `enable() => Promise` | | **Parâmetros** | --- | ### getValidationState | **Descrição** | | | :--- | :--- | | **Assinatura** | `getValidationState() => Promise` | | **Parâmetros** | --- | ### getValue | **Descrição** | Retorna o valor público atual. | | :--- | :--- | | **Assinatura** | `getValue() => Promise` | | **Depreciação** | Leia a propriedade `value` diretamente. | | **Parâmetros** | --- | ### reportValidity | **Descrição** | | | :--- | :--- | | **Assinatura** | `reportValidity() => Promise` | | **Parâmetros** | --- | ### setCustomValidity | **Descrição** | | | :--- | :--- | | **Assinatura** | `setCustomValidity(message: string) => Promise` | | **Parâmetros** | **message**: | ### setFocus | **Descrição** | Move o foco para o campo interno. | | :--- | :--- | | **Assinatura** | `setFocus() => Promise` | | **Depreciação** | Use o foco nativo do componente quando possível. | | **Parâmetros** | --- | ### setOption | **Descrição** | Adiciona ou atualiza uma única opção na coleção interna. | | :--- | :--- | | **Assinatura** | `setOption(option: SelectOptionData) => Promise` | | **Parâmetros** | **option**: Opção que deve ser inserida ou atualizada. | ### setOptions | **Descrição** | Substitui a coleção atual de opções por uma nova lista. | | :--- | :--- | | **Assinatura** | `setOptions(options: SelectOptionData[]) => Promise` | | **Parâmetros** | **options**: Opções que devem ser exibidas pela lista interna. Em `search-mode="remote"`, a seleção atual é preservada mesmo quando não aparece na resposta recebida. | ### setValue | **Descrição** | Define o valor público do select. | | :--- | :--- | | **Assinatura** | `setValue(value: string \| string[]) => Promise` | | **Depreciação** | Atribua a propriedade `value` diretamente. | | **Parâmetros** | **value**: | ### show | **Descrição** | Abre a lista de opções quando o componente está habilitado. | | :--- | :--- | | **Assinatura** | `show() => Promise` | | **Parâmetros** | --- | ### toggleOpen | **Descrição** | Alterna entre os estados aberto e fechado do select. | | :--- | :--- | | **Assinatura** | `toggleOpen() => Promise` | | **Parâmetros** | --- | ### validate | **Descrição** | | | :--- | :--- | | **Assinatura** | `validate() => Promise` | | **Parâmetros** | --- | ## br-select-input ### Métodos ### flipDown | **Descrição** | Atualiza o ícone para o estado visual de lista fechada. | | :--- | :--- | | **Assinatura** | `flipDown() => Promise` | | **Parâmetros** | --- | ### flipUp | **Descrição** | Atualiza o ícone para o estado visual de lista aberta. | | :--- | :--- | | **Assinatura** | `flipUp() => Promise` | | **Parâmetros** | --- | ### setFocus | **Descrição** | Reaplica o foco no input nativo encapsulado por `br-input`. | | :--- | :--- | | **Assinatura** | `setFocus() => Promise` | | **Parâmetros** | --- | ## br-select-list ### Métodos ### close | **Descrição** | Fecha a lista de opções. | | :--- | :--- | | **Assinatura** | `close() => Promise` | | **Parâmetros** | --- | ### focusOption | **Descrição** | Garante visibilidade e foco para uma opção específica. | | :--- | :--- | | **Assinatura** | `focusOption(index: number) => Promise` | | **Parâmetros** | **index**: Índice lógico da opção alvo. | ### getOptions | **Descrição** | Retorna uma cópia das opções atualmente controladas pela lista. | | :--- | :--- | | **Assinatura** | `getOptions() => Promise` | | **Parâmetros** | --- | ### open | **Descrição** | Abre a lista e agenda a medição das opções quando necessário. | | :--- | :--- | | **Assinatura** | `open() => Promise` | | **Parâmetros** | --- | ### scrollFirstSelectedOptionToTop | **Descrição** | Posiciona no topo a primeira opção selecionada na ordem visual da lista.A opção auxiliar de selecionar tudo não participa dessa escolha. | | :--- | :--- | | **Assinatura** | `scrollFirstSelectedOptionToTop() => Promise` | | **Parâmetros** | --- | ### scrollOptionToTop | **Descrição** | Posiciona uma opção no topo da viewport virtual, respeitando o limite final da lista. | | :--- | :--- | | **Assinatura** | `scrollOptionToTop(index: number) => Promise` | | **Parâmetros** | **index**: Índice lógico da opção alvo. | ### setMultiple | **Descrição** | Alterna a lista entre modo simples e múltiplo. | | :--- | :--- | | **Assinatura** | `setMultiple(isMultiple: boolean) => Promise` | | **Parâmetros** | **isMultiple**: Define se a lista deve operar em seleção múltipla. | ### setOption | **Descrição** | Adiciona ou atualiza uma única opção na coleção atual. | | :--- | :--- | | **Assinatura** | `setOption(option: SelectOptionData) => Promise` | | **Parâmetros** | **option**: Opção que deve ser persistida na lista. | ### setOptionSelected | **Descrição** | Aciona a seleção programática de uma opção específica. | | :--- | :--- | | **Assinatura** | `setOptionSelected(index: number, selected?: boolean) => Promise` | | **Parâmetros** | **index**: Índice lógico da opção alvo.**selected**: Estado desejado para a opção. Quando omitido, a própria opção alterna o valor atual. | ### setOptions | **Descrição** | Substitui todas as opções renderizadas pela lista. | | :--- | :--- | | **Assinatura** | `setOptions(options: SelectOptionData[]) => Promise` | | **Parâmetros** | **options**: Nova coleção de opções normalizadas. | ### setSearchTerm | **Descrição** | Atualiza o termo de busca e reinicia a janela virtual no topo. | | :--- | :--- | | **Assinatura** | `setSearchTerm(term: string) => Promise` | | **Parâmetros** | **term**: Termo que deve filtrar a coleção. String vazia restaura todas as opções. | ## br-select-option ### Métodos ### getItemHeight | **Descrição** | Retorna a altura efetiva da opção para cálculo de virtual scroll. | | :--- | :--- | | **Assinatura** | `getItemHeight() => Promise` | | **Parâmetros** | --- | ### setFocus | **Descrição** | Encaminha o foco para o elemento interativo interno da opção. | | :--- | :--- | | **Assinatura** | `setFocus() => Promise` | | **Parâmetros** | --- | ### setSelectedState | **Descrição** | Atualiza programaticamente o estado selecionado da opção. | | :--- | :--- | | **Assinatura** | `setSelectedState(selected?: boolean) => Promise` | | **Parâmetros** | **selected**: Estado desejado. Quando omitido, o valor atual é invertido. | ## br-skip-link ### Métodos ### hide | **Descrição** | Oculta o componente programaticamente. | | :--- | :--- | | **Assinatura** | `hide() => Promise` | | **Parâmetros** | --- | ### show | **Descrição** | Exibe o componente programaticamente. | | :--- | :--- | | **Assinatura** | `show() => Promise` | | **Parâmetros** | --- | ## br-skiplink-item ### Métodos ### itemFocus | **Descrição** | Move o foco para este item. | | :--- | :--- | | **Assinatura** | `itemFocus() => Promise` | | **Parâmetros** | --- | ### navigateToTarget | **Descrição** | Navega para o target definido.Move o foco para o elemento alvo e ajusta a rolagem da página se necessário. | | :--- | :--- | | **Assinatura** | `navigateToTarget() => Promise` | | **Parâmetros** | --- | ## br-slider ### Métodos ### checkValidity | **Descrição** | Retorna se o slider atende às constraints configuradas. | | :--- | :--- | | **Assinatura** | `checkValidity() => Promise` | | **Parâmetros** | --- | ### getValidationState | **Descrição** | Retorna um snapshot serializável da Constraint Validation API. | | :--- | :--- | | **Assinatura** | `getValidationState() => Promise` | | **Parâmetros** | --- | ### reportValidity | **Descrição** | Valida e solicita ao navegador a apresentação do erro atual. | | :--- | :--- | | **Assinatura** | `reportValidity() => Promise` | | **Parâmetros** | --- | ### setCustomValidity | **Descrição** | Define ou limpa uma mensagem de validade customizada. | | :--- | :--- | | **Assinatura** | `setCustomValidity(message: string) => Promise` | | **Parâmetros** | **message**: | ### validate | **Descrição** | Executa o validator do slider e retorna se o valor atual é válido. | | :--- | :--- | | **Assinatura** | `validate() => Promise` | | **Parâmetros** | --- | ## br-step ### Métodos ### BackToPreviousStep | **Descrição** | Método disponibilizado via API do elemento que controla o componente Step, responsável por retornar ao passo anterior e atualizar o valor do estado activeStep | | :--- | :--- | | **Assinatura** | `BackToPreviousStep() => Promise` | | **Depreciação** | Use `previous`. | | **Parâmetros** | --- | ### GetActiveStep | **Descrição** | Método disponibilizado via API do elemento que permite a um componente externo obter a etapa com o estado ativo do componente Step. | | :--- | :--- | | **Assinatura** | `GetActiveStep() => Promise` | | **Parâmetros** | --- | ### ProceedToNextStep | **Descrição** | Método disponibilizado via API do elemento que controla o componente Step, responsável por avançar para o próximo passo e atualizar o valor do estado activeStep | | :--- | :--- | | **Assinatura** | `ProceedToNextStep() => Promise` | | **Depreciação** | Use `next`. | | **Parâmetros** | --- | ### StepValidation | **Descrição** | Método disponibilizado via API do elemento que integra um componente externo ao componente Step, permitindo sinalizar validações ou destacar a etapa com estado ativo. | | :--- | :--- | | **Assinatura** | `StepValidation(validationStatus: StepValidationStatus) => Promise` | | **Depreciação** | Use `setCurrentValidation`. | | **Parâmetros** | **validationStatus**: | ### next | **Descrição** | Avança para o próximo passo. | | :--- | :--- | | **Assinatura** | `next() => Promise` | | **Parâmetros** | --- | ### previous | **Descrição** | Retorna ao passo anterior. | | :--- | :--- | | **Assinatura** | `previous() => Promise` | | **Parâmetros** | --- | ### setCurrentValidation | **Descrição** | Define o estado de validação do passo ativo. | | :--- | :--- | | **Assinatura** | `setCurrentValidation(validationStatus: StepValidationStatus) => Promise` | | **Parâmetros** | **validationStatus**: | ## br-step-item ### Métodos ### handleShowTimeLine | **Descrição** | Método que define a orientação do stepItem e controla a exibição da linha do tempo após o componente. | | :--- | :--- | | **Assinatura** | `handleShowTimeLine(value: boolean, layout: StepItemLayout) => Promise` | | **Parâmetros** | **value**: **layout**: | ### setContent | **Descrição** | Método disponibilizado via api do elemento que atribui o valor que irá ser exibido dentro do componente stepItem | | :--- | :--- | | **Assinatura** | `setContent(value: string) => Promise` | | **Parâmetros** | **value**: | ### setContentType | **Descrição** | Método disponibilizado via api do elemento que atribui o valor que irá definir o tipo de conteúdo apresentado dentro do componente stepItem | | :--- | :--- | | **Assinatura** | `setContentType(value: StepItemContentType) => Promise` | | **Parâmetros** | **value**: | ### setItemRole | **Descrição** | Define o role ARIA do botão interno.Chamado pelo componente pai quando o contexto semântico exige um rolediferente do padrão `option` (ex.: `tab` em contexto de tablist). | | :--- | :--- | | **Assinatura** | `setItemRole(value: StepItemRole) => Promise` | | **Parâmetros** | **value**: | ### setLabelPosition | **Descrição** | Método disponibilizado via api do elemento que atribui o valor ao estado que define onde o label, o texto de destaque, irá ficar localizado | | :--- | :--- | | **Assinatura** | `setLabelPosition(value: StepItemLabelPosition) => Promise` | | **Parâmetros** | **value**: | ### setMode | **Descrição** | Método disponibilizado via api do elemento que atribui o valor que irá definir o modo como o componente irá se comportar e exibir seu estilo. | | :--- | :--- | | **Assinatura** | `setMode(value: StepItemMode) => Promise` | | **Parâmetros** | **value**: | ### setStepItemPositionStatus | **Descrição** | Método disponibilizado via api do elemento que indica a posição do step item, ele serve para setar o state stepItemPositionStatus do componente | | :--- | :--- | | **Assinatura** | `setStepItemPositionStatus(value: StepItemPositionStatus) => Promise` | | **Parâmetros** | **value**: | ### setVerticalContentPlacement | **Descrição** | Método que define a posição do conteúdo no layout vertical. | | :--- | :--- | | **Assinatura** | `setVerticalContentPlacement(value: StepItemVerticalContentPlacement) => Promise` | | **Parâmetros** | **value**: | ## br-switch ### Métodos ### checkValidity | **Descrição** | Retorna `true` se o valor do switch for válido, caso contrário `false`.Se o switch for inválido, dispara um evento 'invalid'. | | :--- | :--- | | **Assinatura** | `checkValidity() => Promise` | | **Parâmetros** | --- | ### getValidationState | **Descrição** | Retorna um snapshot serializável da Constraint Validation API. | | :--- | :--- | | **Assinatura** | `getValidationState() => Promise` | | **Parâmetros** | --- | ### reportValidity | **Descrição** | Retorna `true` se o valor do componente for válido, caso contrário `false`.Se for inválido, exibe a mensagem de erro padrão do navegador. | | :--- | :--- | | **Assinatura** | `reportValidity() => Promise` | | **Parâmetros** | --- | ### setCustomValidity | **Descrição** | Define uma mensagem de validação customizada para o switch.Se a mensagem for uma string vazia, o erro customizado é limpo. | | :--- | :--- | | **Assinatura** | `setCustomValidity(message: string) => Promise` | | **Parâmetros** | **message**: | ### toggleChecked | **Descrição** | Inverte o valor da prop `checked` | | :--- | :--- | | **Assinatura** | `toggleChecked() => Promise` | | **Depreciação** | Atualize a propriedade `checked` diretamente. | | **Parâmetros** | --- | ### validate | **Descrição** | Executa o validator do switch e retorna se o valor atual é válido. | | :--- | :--- | | **Assinatura** | `validate() => Promise` | | **Parâmetros** | --- | ## br-tab ### Métodos ### getActiveTab | **Descrição** | Retorna o identificador da aba ativa atual. | | :--- | :--- | | **Assinatura** | `getActiveTab() => Promise` | | **Parâmetros** | --- | ### setActiveTab | **Descrição** | Ativa programaticamente uma aba a partir do seu identificador. | | :--- | :--- | | **Assinatura** | `setActiveTab(tabId: string) => Promise` | | **Parâmetros** | **tabId**: Identificador da aba (`tab-item-id`). | ## br-table ### Métodos ### startLoading | **Descrição** | Inicia o estado de carregamento da tabela. | | :--- | :--- | | **Assinatura** | `startLoading() => Promise` | | **Parâmetros** | --- | ### stopLoading | **Descrição** | Interrompe o estado de carregamento da tabela. | | :--- | :--- | | **Assinatura** | `stopLoading() => Promise` | | **Parâmetros** | --- | ## br-tag ### Métodos ### checkValidity | **Descrição** | Retorna se a tag selecionável atende às constraints configuradas. | | :--- | :--- | | **Assinatura** | `checkValidity() => Promise` | | **Parâmetros** | --- | ### getValidationState | **Descrição** | Retorna um snapshot serializável da Constraint Validation API. | | :--- | :--- | | **Assinatura** | `getValidationState() => Promise` | | **Parâmetros** | --- | ### reportValidity | **Descrição** | Valida e solicita ao navegador a apresentação do erro atual. | | :--- | :--- | | **Assinatura** | `reportValidity() => Promise` | | **Parâmetros** | --- | ### setCustomValidity | **Descrição** | Define ou limpa uma mensagem de validade customizada. | | :--- | :--- | | **Assinatura** | `setCustomValidity(message: string) => Promise` | | **Parâmetros** | **message**: | ### validate | **Descrição** | Executa o validator da tag e retorna se o valor atual é válido. | | :--- | :--- | | **Assinatura** | `validate() => Promise` | | **Parâmetros** | --- | ## br-textarea ### Métodos ### checkValidity | **Descrição** | Retorna `true` se o valor do textarea for válido, caso contrário `false`.Se o textarea for inválido, dispara um evento 'invalid'. | | :--- | :--- | | **Assinatura** | `checkValidity() => Promise` | | **Parâmetros** | --- | ### getValidationState | **Descrição** | Retorna um snapshot serializável da Constraint Validation API. | | :--- | :--- | | **Assinatura** | `getValidationState() => Promise` | | **Parâmetros** | --- | ### reportValidity | **Descrição** | Retorna `true` se o valor do textarea for válido, caso contrário `false`.Se for inválido, exibe a mensagem de erro padrão do navegador. | | :--- | :--- | | **Assinatura** | `reportValidity() => Promise` | | **Parâmetros** | --- | ### select | **Descrição** | Seleciona todo o texto do controle nativo, conforme HTMLTextAreaElement.select(). | | :--- | :--- | | **Assinatura** | `select() => Promise` | | **Parâmetros** | --- | ### setCustomValidity | **Descrição** | Define uma mensagem de validação customizada para o textarea.Se a mensagem for uma string vazia, o erro customizado é limpo. | | :--- | :--- | | **Assinatura** | `setCustomValidity(message: string) => Promise` | | **Parâmetros** | **message**: | ### setRangeText | **Descrição** | Substitui um intervalo de texto usando a API nativa do textarea. | | :--- | :--- | | **Assinatura** | `setRangeText(replacement: string, start?: number, end?: number, selectionMode?: SelectionMode) => Promise` | | **Parâmetros** | **replacement**: **start**: **end**: **selectionMode**: | ### setSelectionRange | **Descrição** | Define o intervalo selecionado no controle nativo. | | :--- | :--- | | **Assinatura** | `setSelectionRange(start: number, end: number, direction?: "forward" \| "backward" \| "none") => Promise` | | **Parâmetros** | **start**: **end**: **direction**: | ### setValue | **Descrição** | Define um novo valor para o textarea. | | :--- | :--- | | **Assinatura** | `setValue(newValue: string) => Promise` | | **Parâmetros** | **newValue**: - O novo valor a ser definido. | ### validate | **Descrição** | Executa o validator customizado e retorna se o textarea está válido. | | :--- | :--- | | **Assinatura** | `validate() => Promise` | | **Parâmetros** | --- | ## br-tooltip ### Métodos ### hide | **Descrição** | Oculta o tooltip programaticamente (alias para `hideTooltip`). | | :--- | :--- | | **Assinatura** | `hide() => Promise` | | **Parâmetros** | --- | ### hideTooltip | **Descrição** | Oculta o tooltip programaticamente. | | :--- | :--- | | **Assinatura** | `hideTooltip() => Promise` | | **Parâmetros** | --- | ### setTriggerElement | **Descrição** | Define um trigger externo para o tooltip. | | :--- | :--- | | **Assinatura** | `setTriggerElement(element: HTMLElement \| null) => Promise` | | **Parâmetros** | **element**: | ### show | **Descrição** | Exibe o tooltip programaticamente (alias para `showTooltip`). | | :--- | :--- | | **Assinatura** | `show() => Promise` | | **Parâmetros** | --- | ### showTooltip | **Descrição** | Exibe o tooltip programaticamente. | | :--- | :--- | | **Assinatura** | `showTooltip() => Promise` | | **Parâmetros** | --- | ## br-upload ### Métodos ### cancelUpload | **Descrição** | Cancela o envio atual iniciado pelo `uploadHandler`. | | :--- | :--- | | **Assinatura** | `cancelUpload() => Promise` | | **Parâmetros** | --- | ### checkValidity | **Descrição** | Retorna `true` se o valor do componente for válido, caso contrário `false`.Se o componente for inválido, dispara um evento 'invalid'. | | :--- | :--- | | **Assinatura** | `checkValidity() => Promise` | | **Parâmetros** | --- | ### getValidationState | **Descrição** | Retorna um snapshot serializável da Constraint Validation API. | | :--- | :--- | | **Assinatura** | `getValidationState() => Promise` | | **Parâmetros** | --- | ### reportValidity | **Descrição** | Retorna `true` se o valor do componente for válido, caso contrário `false`.Se for inválido, exibe a mensagem de erro padrão do navegador. | | :--- | :--- | | **Assinatura** | `reportValidity() => Promise` | | **Parâmetros** | --- | ### setCustomValidity | **Descrição** | Define uma mensagem de validação customizada para o upload.Se a mensagem for uma string vazia, o erro customizado é limpo. | | :--- | :--- | | **Assinatura** | `setCustomValidity(message: string) => Promise` | | **Parâmetros** | **message**: | ### validate | **Descrição** | Executa o validator do upload e retorna se a lista atual é válida. | | :--- | :--- | | **Assinatura** | `validate() => Promise` | | **Parâmetros** | --- | ## br-wizard ### Métodos ### getAllSteps | **Descrição** | Retorna todos os painéis do wizard. | | :--- | :--- | | **Assinatura** | `getAllSteps() => Promise` | | **Parâmetros** | --- | ### getCurrentStep | **Descrição** | Retorna o elemento HTML do painel ativo no momento. | | :--- | :--- | | **Assinatura** | `getCurrentStep() => Promise` | | **Parâmetros** | --- | ### getCurrentStepIndex | **Descrição** | Retorna o índice (número) da etapa atual.A numeração começa em 1 (primeira etapa = 1, segunda = 2, etc). | | :--- | :--- | | **Assinatura** | `getCurrentStepIndex() => Promise` | | **Parâmetros** | --- | ### getStepByIndex | **Descrição** | Retorna um painel específico pelo índice. | | :--- | :--- | | **Assinatura** | `getStepByIndex(stepNumber: number) => Promise` | | **Parâmetros** | **stepNumber**: - Número da etapa (numeração começa em 1) | ### getTotalSteps | **Descrição** | Retorna o número total de etapas do wizard. | | :--- | :--- | | **Assinatura** | `getTotalSteps() => Promise` | | **Parâmetros** | --- | ### goToStep | **Descrição** | Navega para uma etapa específica.Executa validação se estiver avançando (etapa alvo > etapa atual). | | :--- | :--- | | **Assinatura** | `goToStep(stepNumber: number) => Promise` | | **Parâmetros** | **stepNumber**: - Número da etapa de destino (numeração começa em 1) | ### next | **Descrição** | Avança para a próxima etapa. | | :--- | :--- | | **Assinatura** | `next() => Promise` | | **Parâmetros** | --- | ### nextStep | **Descrição** | Avança para a próxima etapa.Executa validação via evento `brWizardBeforeStepChange` antes de navegar. | | :--- | :--- | | **Assinatura** | `nextStep() => Promise` | | **Parâmetros** | --- | ### previous | **Descrição** | Retorna para a etapa anterior. | | :--- | :--- | | **Assinatura** | `previous() => Promise` | | **Parâmetros** | --- | ### previousStep | **Descrição** | Volta para a etapa anterior.Não executa validação ao retornar. | | :--- | :--- | | **Assinatura** | `previousStep() => Promise` | | **Parâmetros** | --- | ### reset | **Descrição** | Retorna à primeira etapa do wizard.Não executa validação (útil para reiniciar o fluxo). | | :--- | :--- | | **Assinatura** | `reset() => Promise` | | **Parâmetros** | --- | --- ## All Component Props import ComponentStatusTag from '@site/src/components/ComponentStatusTag'; # All Component Props ## br-avatar ### Propriedades ### alt | **Atributo** | `alt` | | :--- | :--- | | **Descrição** | Texto alternativo (alt) associado à imagem do avatar. Essencial para acessibilidade.Deve descrever de forma clara e concisa o conteúdo da imagem, por exemplo: "Foto de perfil de João Silva". | | **Tipo** | `string` | | **Valor padrão** | `'Foto de perfil do usuário'` | ### bgColor | **Atributo** | `bg-color` | | :--- | :--- | | **Descrição** | Permite definir a cor de fundo do componente.Aceita os seguintes formatos de cor:- Cores nomeadas do CSS: 'red', 'blue', 'green', 'yellow', etc.- Códigos hexadecimais: '#ff0000', '#00ff00', '#0000ff', etc.- Valores RGB: 'rgb(255, 0, 0)', 'rgb(0, 255, 0)', etc.- Valores RGBA: 'rgba(255, 0, 0, 0.5)', 'rgba(0, 255, 0, 0.8)', etc.- Valores HSL: 'hsl(0, 100%, 50%)', 'hsl(120, 100%, 50%)', etc.- Valores HSLA: 'hsla(0, 100%, 50%, 0.5)', 'hsla(240, 100%, 50%, 0.7)', etc.Se não especificada, usa a cor padrão do tema. | | **Tipo** | `string` | | **Valor padrão** | `'#DBE8FB'` | ### customId | **Atributo** | `custom-id` | | :--- | :--- | | **Descrição** | Identificador único do componente.Quando omitido, um valor é gerado automaticamente.> **Padrão:** valor único gerado por generateUniqueId(). | | **Tipo** | `string` | | **Valor padrão** | `generateUniqueId()` | ### density | **Atributo** | `density` | | :--- | :--- | | **Descrição** | Define a densidade visual do componente.- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.- `large`: Baixa densidade (componente maior, mais espaçamento e altura). | | **Tipo** | `"large" \| "medium" \| "small"` | | **Valor padrão** | `'medium'` | ### disabled | **Atributo** | `disabled` | | :--- | :--- | | **Descrição** | Desabilita a interação com o componente. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### iconic | **Atributo** | `iconic` | | :--- | :--- | | **Descrição** | Exibe a variação icônica. Quando informada, tem precedência sobre `isIconic`. | | **Tipo** | `boolean` | | **Valor padrão** | --- | ### isIconic | **Atributo** | `is-iconic` | | :--- | :--- | | **Depreciação** | Use `iconic`. | | **Descrição** | | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### src | **Atributo** | `src` | | :--- | :--- | | **Descrição** | URL da imagem a ser exibida no avatar do tipo 'fotográfico'.Deve ser uma URL válida que aponta para a imagem desejada. | | **Tipo** | `string` | | **Valor padrão** | `''` | ### status | **Atributo** | `status` | | :--- | :--- | | **Descrição** | Exibe um indicador de status no avatar. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### statusBgColor | **Atributo** | `status-bg-color` | | :--- | :--- | | **Descrição** | Cor de fundo do indicador de status padrão. | | **Tipo** | `string` | | **Valor padrão** | `'rgb(22, 136, 33)'` | ### statusLabel | **Atributo** | `status-label` | | :--- | :--- | | **Descrição** | Rótulo acessível do indicador de status padrão. | | **Tipo** | `string` | | **Valor padrão** | `'Status do usuário'` | ### statusPosition | **Atributo** | `status-position` | | :--- | :--- | | **Descrição** | Posição do indicador de status sobre o avatar. | | **Tipo** | `"bottom-left" \| "bottom-right" \| "top-left" \| "top-right"` | | **Valor padrão** | `'top-right'` | ### statusSize | **Atributo** | `status-size` | | :--- | :--- | | **Descrição** | Tamanho do indicador de status padrão. | | **Tipo** | `string` | | **Valor padrão** | `'12px'` | ### text | **Atributo** | `text` | | :--- | :--- | | **Descrição** | Conteúdo textual do avatar.Apenas o primeiro caractere será exibido em maiúscula. | | **Tipo** | `string` | | **Valor padrão** | `''` | ## br-breadcrumb ### Propriedades ### crumbs | **Atributo** | `crumbs` | | :--- | :--- | | **Descrição** | Define o array de objetos que receberá os nomes e links do breadcrumb.Define valor padrão do breadcrumb 'defaultCrumbs'. *(obrigatório)* | | **Tipo** | `BreadcrumbItem[] \| string` | | **Valor padrão** | --- | ### customId | **Atributo** | `custom-id` | | :--- | :--- | | **Descrição** | Identificador único do componente.Quando omitido, um valor é gerado automaticamente.> **Padrão:** valor único gerado por generateUniqueId(). | | **Tipo** | `string` | | **Valor padrão** | `generateUniqueId()` | ### homeHref | **Atributo** | `home-href` | | :--- | :--- | | **Descrição** | URL canônica da página inicial. Quando informada, tem precedência sobre `homeUrl`. | | **Tipo** | `string` | | **Valor padrão** | --- | ### homeUrl | **Atributo** | `home-url` | | :--- | :--- | | **Depreciação** | Use `homeHref`. | | **Descrição** | Caso não seja fornecido, o valor padrão será /. | | **Tipo** | `string` | | **Valor padrão** | `'/'` | ### navigationMode | **Atributo** | `navigation-mode` | | :--- | :--- | | **Descrição** | Controla como os links do breadcrumb integram a navegação mantendo `href` real nos itens navegáveis.- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.Cliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos. | | **Tipo** | `"event" \| "native"` | | **Valor padrão** | `'native'` | ## br-breadcrumb-item ### Propriedades ### active | **Atributo** | `active` | | :--- | :--- | | **Descrição** | Identifica a página atual. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### home | **Atributo** | `home` | | :--- | :--- | | **Descrição** | Identifica o item inicial. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### href | **Atributo** | `href` | | :--- | :--- | | **Descrição** | URL do item. | | **Tipo** | `string` | | **Valor padrão** | --- | ### label | **Atributo** | `label` | | :--- | :--- | | **Descrição** | Rótulo do item. | | **Tipo** | `string` | | **Valor padrão** | `''` | ### target | **Atributo** | `target` | | :--- | :--- | | **Descrição** | Contexto de navegação. | | **Tipo** | `string` | | **Valor padrão** | --- | ## br-button ### Propriedades ### active | **Atributo** | `active` | | :--- | :--- | | **Descrição** | Estado ativo canônico. Quando informado, tem precedência sobre `isActive`. | | **Tipo** | `boolean` | | **Valor padrão** | --- | ### ariaControls | **Atributo** | `aria-controls` | | :--- | :--- | | **Descrição** | Referência ao ID do elemento que o botão controla.Use em conjunto com `ariaExpanded` para relacionar o botão ao painel que ele expande/recolhe. | | **Tipo** | `string` | | **Valor padrão** | `null` | ### ariaExpanded | **Atributo** | `aria-expanded` | | :--- | :--- | | **Descrição** | Indica se um elemento controlado pelo botão está expandido ou recolhido.Use em botões que abrem menus, acordeões ou outros painéis expansíveis.O valor deve ser 'true' ou 'false'. | | **Tipo** | `string` | | **Valor padrão** | `null` | ### ariaHaspopup | **Atributo** | `aria-haspopup` | | :--- | :--- | | **Descrição** | Indica que o botão abre um menu, listbox, tree, grid ou dialog.Os valores permitidos são: 'true', 'menu', 'listbox', 'tree', 'grid' ou 'dialog'. | | **Tipo** | `"dialog" \| "grid" \| "listbox" \| "menu" \| "tree" \| "true"` | | **Valor padrão** | `null` | ### ariaLabel | **Atributo** | `aria-label` | | :--- | :--- | | **Descrição** | Define o rótulo acessível usado por tecnologias assistivas. | | **Tipo** | `string` | | **Valor padrão** | `null` | ### ariaPressed | **Atributo** | `aria-pressed` | | :--- | :--- | | **Descrição** | Define o estado de pressionado do botão.Este atributo é usado para indicar se o botão está atualmente pressionado ou não.É especialmente útil para botões que podem ser alternados entre os estados pressionado e não pressionado.O valor deve ser 'true' ou 'false'. | | **Tipo** | `string` | | **Valor padrão** | `null` | ### colorMode | **Atributo** | `color-mode` | | :--- | :--- | | **Descrição** | Define se o botão usará um esquema de cores escuro. | | **Tipo** | `"dark"` | | **Valor padrão** | --- | ### customId | **Atributo** | `custom-id` | | :--- | :--- | | **Descrição** | Identificador único do componente.Quando omitido, um valor é gerado automaticamente.> **Padrão:** valor único gerado por generateUniqueId(). | | **Tipo** | `string` | | **Valor padrão** | `generateUniqueId()` | ### customTabIndex | **Atributo** | `custom-tab-index` | | :--- | :--- | | **Depreciação** | Use o atributo/propriedade nativo `tabIndex` do host. | | **Descrição** | | | **Tipo** | `number` | | **Valor padrão** | --- | ### density | **Atributo** | `density` | | :--- | :--- | | **Descrição** | Define a densidade visual do componente.- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.- `large`: Baixa densidade (componente maior, mais espaçamento e altura). | | **Tipo** | `"large" \| "medium" \| "small"` | | **Valor padrão** | `'medium'` | ### disabled | **Atributo** | `disabled` | | :--- | :--- | | **Descrição** | Desabilita a interação com o componente. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### emphasis | **Atributo** | `emphasis` | | :--- | :--- | | **Descrição** | Define a ênfase do botão, alterando sua aparência para criar hierarquia visual e destacar ações importantes. | | **Tipo** | `"primary" \| "secondary" \| "tertiary"` | | **Valor padrão** | --- | ### isActive | **Atributo** | `is-active` | | :--- | :--- | | **Depreciação** | Use `active`. | | **Descrição** | | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### isLoading | **Atributo** | `is-loading` | | :--- | :--- | | **Depreciação** | Use `loading`. | | **Descrição** | | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### loading | **Atributo** | `loading` | | :--- | :--- | | **Descrição** | Estado de carregamento canônico. Quando informado, tem precedência sobre `isLoading`. | | **Tipo** | `boolean` | | **Valor padrão** | --- | ### shape | **Atributo** | `shape` | | :--- | :--- | | **Descrição** | Define o formato do botão. | | **Tipo** | `"block" \| "circle" \| "pill"` | | **Valor padrão** | --- | ### type | **Atributo** | `type` | | :--- | :--- | | **Descrição** | Define o tipo de botão, especificando seu comportamento padrão. | | **Tipo** | `"button" \| "reset" \| "submit"` | | **Valor padrão** | --- | ### value | **Atributo** | `value` | | :--- | :--- | | **Descrição** | Define o valor inicial do botão em um formulário. | | **Tipo** | `string` | | **Valor padrão** | --- | ## br-card ### Propriedades ### customId | **Atributo** | `custom-id` | | :--- | :--- | | **Descrição** | Identificador único do componente.Quando omitido, um valor é gerado automaticamente.> **Padrão:** valor único gerado por generateUniqueId(). | | **Tipo** | `string` | | **Valor padrão** | `generateUniqueId()` | ### disabled | **Atributo** | `disabled` | | :--- | :--- | | **Descrição** | Desabilita a interação com o componente. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### hover | **Atributo** | `hover` | | :--- | :--- | | **Depreciação** | Use `interactive`. | | **Descrição** | | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### interactive | **Atributo** | `interactive` | | :--- | :--- | | **Descrição** | Habilita indicação visual de interatividade. Quando informada, tem precedência sobre `hover`. | | **Tipo** | `boolean` | | **Valor padrão** | --- | ## br-carousel ### Propriedades ### ariaLabel | **Atributo** | `aria-label` | | :--- | :--- | | **Descrição** | Rótulo acessível do carrossel.Não deve conter a palavra "carrossel" (W3C APG).Atribuído ao `aria-label` do container raiz. | | **Tipo** | `string` | | **Valor padrão** | --- | ### autoPlay | **Atributo** | `auto-play` | | :--- | :--- | | **Depreciação** | Use `autoplay`. | | **Descrição** | Habilita reprodução automática.Pausa em hover e foco (W3C). Ativa o loop circular automaticamente.Não recomendado em dispositivos móveis. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### autoplay | **Atributo** | `autoplay` | | :--- | :--- | | **Descrição** | Habilita reprodução automática. Quando informada, tem precedência sobre `autoPlay`. | | **Tipo** | `boolean` | | **Valor padrão** | --- | ### circular | **Atributo** | `circular` | | :--- | :--- | | **Descrição** | Habilita navegação circular. Quando informada, tem precedência sobre `isCircular`. | | **Tipo** | `boolean` | | **Valor padrão** | --- | ### colorMode | **Atributo** | `color-mode` | | :--- | :--- | | **Descrição** | Aplica esquema de cores escuro ao componente. | | **Tipo** | `"dark"` | | **Valor padrão** | --- | ### customId | **Atributo** | `custom-id` | | :--- | :--- | | **Descrição** | Identificador único do componente.Quando omitido, um valor é gerado automaticamente.> **Padrão:** valor único gerado por generateUniqueId(). | | **Tipo** | `string` | | **Valor padrão** | `generateUniqueId()` | ### direction | **Atributo** | `direction` | | :--- | :--- | | **Descrição** | Direção de navegação automática do carrossel.- `left`: retrocede (vai para o slide anterior).- `right`: avança (vai para o próximo slide).Só tem efeito quando `autoPlay=true`. | | **Tipo** | `"left" \| "right"` | | **Valor padrão** | `'right'` | ### height | **Atributo** | `height` | | :--- | :--- | | **Descrição** | Altura do carrossel.Aceita qualquer valor CSS válido para `height` (ex.: `400px`, `50vh`). | | **Tipo** | `string` | | **Valor padrão** | --- | ### imageFit | **Atributo** | `image-fit` | | :--- | :--- | | **Descrição** | Ajuste aplicado a imagens filhas diretas de `br-carousel-page`. | | **Tipo** | `"contain" \| "cover" \| "fill" \| "none" \| "scale-down"` | | **Valor padrão** | `'cover'` | ### indicatorPosition | **Atributo** | `indicator-position` | | :--- | :--- | | **Descrição** | Posição do indicador de páginas em relação ao palco.Ignorada quando `indicatorType="none"`.- `outside`: indicador fica abaixo do palco.- `inside`: indicador fica sobreposto ao conteúdo. | | **Tipo** | `"inside" \| "outside"` | | **Valor padrão** | `'outside'` | ### indicatorType | **Atributo** | `indicator-type` | | :--- | :--- | | **Descrição** | Define o tipo de indicador de páginas renderizado.- `simple`: dots usando `br-step` em modo controller.- `textual`: texto "X/N" com `aria-live`.- `none`: sem indicador. | | **Tipo** | `"none" \| "simple" \| "textual"` | | **Valor padrão** | `'simple'` | ### interval | **Atributo** | `interval` | | :--- | :--- | | **Descrição** | Intervalo em milissegundos entre cada avanço automático.Só tem efeito quando `autoPlay=true`. | | **Tipo** | `number` | | **Valor padrão** | `5000` | ### isCircular | **Atributo** | `is-circular` | | :--- | :--- | | **Depreciação** | Use `circular`. | | **Descrição** | Habilita a navegação circular entre os slides.Quando true, os botões "Anterior" e "Próximo" permanecem sempre habilitados: avançar a partir do último slide retorna ao primeiro, e retroceder a partir do primeiro leva ao último.Se autoPlay estiver ativado, o comportamento circular será aplicado automaticamente, independentemente deste valor. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### maxWidth | **Atributo** | `max-width` | | :--- | :--- | | **Descrição** | Largura máxima do carrossel.Quando definido, o componente é centralizado horizontalmente.Aceita qualquer valor CSS válido para `max-width` (ex.: `800px`, `64rem`). | | **Tipo** | `string` | | **Valor padrão** | --- | ### minHeight | **Atributo** | `min-height` | | :--- | :--- | | **Descrição** | Altura mínima do palco do carrossel.Aceita qualquer valor CSS válido para `min-height` (ex.: `400px`, `50vh`). | | **Tipo** | `string` | | **Valor padrão** | --- | ### mobileNav | **Atributo** | `mobile-nav` | | :--- | :--- | | **Descrição** | Exibe botões de navegação em dispositivos móveis.Por padrão os botões são ocultados no breakpoint `sm`. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### navPosition | **Atributo** | `nav-position` | | :--- | :--- | | **Descrição** | Posição dos botões de navegação (prev/next) em relação ao palco.- `outside`: botões ficam nas laterais externas ao palco.- `inside`: botões ficam sobrepostos dentro do palco, ocupando toda a altura. | | **Tipo** | `"inside" \| "outside"` | | **Valor padrão** | `'outside'` | ## br-carousel-page ### Propriedades ### active | **Atributo** | `active` | | :--- | :--- | | **Descrição** | Marca este slide como visível e acessível.Pode ser usado declarativamente no HTML para definir o slide inicial:Em runtime, o `br-carousel` pai gerencia o estado via `setActive()`. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### customId | **Atributo** | `custom-id` | | :--- | :--- | | **Descrição** | Identificador único customizável do slide.Quando definido, é aplicado diretamente ao atributo `id` do elemento host,garantindo que referências ARIA externas, testes automatizados e âncoras funcionem corretamente.O `br-carousel` pai detecta este valor e usa-o também no `controls-id` do indicador de tabs,mantendo o vínculo ARIA entre tab e tabpanel automaticamente. | | **Tipo** | `string` | | **Valor padrão** | --- | ## br-checkbox ### Propriedades ### checked | **Atributo** | `checked` | | :--- | :--- | | **Descrição** | Define o estado de seleção do checkbox.Se definido como verdadeiro, o checkbox estará marcado. Caso contrário, estará desmarcado. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### customId | **Atributo** | `custom-id` | | :--- | :--- | | **Descrição** | Identificador único.Caso não seja fornecido, um ID gerado automaticamente será usado. | | **Tipo** | `string` | | **Valor padrão** | ```br-checkbox-${checkboxId++}``` | ### disabled | **Atributo** | `disabled` | | :--- | :--- | | **Descrição** | Desativa o checkbox, tornando-o não interativo. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### feedbackState | **Atributo** | `feedback-state` | | :--- | :--- | | **Descrição** | Estado de feedback canônico. Quando informado, tem precedência sobre `state`. | | **Tipo** | `"invalid" \| "valid"` | | **Valor padrão** | --- | ### hasHiddenLabel | **Atributo** | `has-hidden-label` | | :--- | :--- | | **Depreciação** | Use `labelHidden`. | | **Descrição** | Define se o label associado ao checkbox deve ser oculto.Se definido como verdadeiro, o texto do label será oculto, mas o checkbox ainda estará visível e funcional. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### indeterminate | **Atributo** | `indeterminate` | | :--- | :--- | | **Descrição** | Define o estado intermediário do checkbox.Quando verdadeiro, exibe uma marcação parcial visual que indica seleção parcial.Útil para representar grupos onde alguns itens estão selecionados, mas não todos.Ao clicar no checkbox neste estado, ele será automaticamente alterado para marcado. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### isFather | **Atributo** | `is-father` | | :--- | :--- | | **Depreciação** | Configure seleção coletiva em `br-checkbox-group`/`br-checkgroup`. | | **Descrição** | Indica se o checkbox é pai de um grupo de checkboxes. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### label | **Atributo** | `label` | | :--- | :--- | | **Descrição** | Texto descritivo exibido à direita do checkbox.Caso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado. | | **Tipo** | `string` | | **Valor padrão** | --- | ### labelHidden | **Atributo** | `label-hidden` | | :--- | :--- | | **Descrição** | Oculta visualmente o rótulo. Quando informada, tem precedência sobre `hasHiddenLabel`. | | **Tipo** | `boolean` | | **Valor padrão** | --- | ### name | **Atributo** | `name` | | :--- | :--- | | **Descrição** | Define o nome do checkbox, que é utilizado para agrupar checkboxes em formulários e identificar o campo.O valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários. *(obrigatório)* | | **Tipo** | `string` | | **Valor padrão** | --- | ### required | **Atributo** | `required` | | :--- | :--- | | **Descrição** | Se verdadeiro, o checkbox é obrigatório e deve ser marcado antes que o formulário possa ser enviado. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### state | **Atributo** | `state` | | :--- | :--- | | **Descrição** | Indica a validade do checkbox.Se não for especificado, o valor padrão é `null`, indicando que a validade não foi definida. | | **Tipo** | `"invalid" \| "valid"` | | **Valor padrão** | --- | ### validator | **Atributo** | --- | | :--- | :--- | | **Descrição** | Regra síncrona ou assíncrona aplicada ao estado booleano do checkbox. | | **Tipo** | `(value: boolean) => string \| Promise` | | **Valor padrão** | --- | ### value | **Atributo** | `value` | | :--- | :--- | | **Descrição** | Define o valor associado ao checkbox quando ele faz parte de um formulário nativo (`
`).Esse valor é enviado com o formulário quando o checkbox está selecionado.**Nota:** Esta propriedade não deve ser utilizada para determinar se o checkbox está selecionado; para verificar o estado de seleção, use a propriedade `checked`. | | **Tipo** | `string` | | **Valor padrão** | --- | ## br-checkbox-group ### Propriedades ### customId | **Atributo** | `custom-id` | | :--- | :--- | | **Descrição** | Identificador único do controlador. | | **Tipo** | `string` | | **Valor padrão** | ```br-checkbox-group-${checkboxGroupId++}``` | ### indeterminate | **Atributo** | `indeterminate` | | :--- | :--- | | **Descrição** | Define o estado indeterminado inicial do grupo. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### label | **Atributo** | `label` | | :--- | :--- | | **Descrição** | Texto descritivo do grupo. | | **Tipo** | `string` | | **Valor padrão** | --- | ### orientation | **Atributo** | `orientation` | | :--- | :--- | | **Descrição** | Orientação visual das opções. | | **Tipo** | `"horizontal" \| "vertical"` | | **Valor padrão** | `'vertical'` | ### selectAllLabel | **Atributo** | `select-all-label` | | :--- | :--- | | **Descrição** | Rótulo para marcar todos os checkboxes. | | **Tipo** | `string` | | **Valor padrão** | `'Selecionar tudo'` | ### unselectAllLabel | **Atributo** | `unselect-all-label` | | :--- | :--- | | **Descrição** | Rótulo para desmarcar todos os checkboxes. | | **Tipo** | `string` | | **Valor padrão** | `'Desselecionar tudo'` | ## br-checkgroup ### Propriedades ### customId | **Atributo** | `custom-id` | | :--- | :--- | | **Descrição** | Identificador legado do controlador. | | **Tipo** | `string` | | **Valor padrão** | --- | ### indeterminate | **Atributo** | `indeterminate` | | :--- | :--- | | **Descrição** | Estado indeterminado inicial. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### label | **Atributo** | `label` | | :--- | :--- | | **Descrição** | Texto descritivo do grupo. | | **Tipo** | `string` | | **Valor padrão** | --- | ### labelDesselecionado | **Atributo** | `label-desselecionado` | | :--- | :--- | | **Depreciação** | Use `selectAllLabel`. | | **Descrição** | | | **Tipo** | `string` | | **Valor padrão** | --- | ### labelSelecionado | **Atributo** | `label-selecionado` | | :--- | :--- | | **Depreciação** | Use `unselectAllLabel`. | | **Descrição** | | | **Tipo** | `string` | | **Valor padrão** | --- | ### selectAllLabel | **Atributo** | `select-all-label` | | :--- | :--- | | **Descrição** | Rótulo para marcar todos. | | **Tipo** | `string` | | **Valor padrão** | --- | ### unselectAllLabel | **Atributo** | `unselect-all-label` | | :--- | :--- | | **Descrição** | Rótulo para desmarcar todos. | | **Tipo** | `string` | | **Valor padrão** | --- | ## br-collapse ### Propriedades ### accordionGroup | **Atributo** | `accordion-group` | | :--- | :--- | | **Descrição** | Identifica o grupo de accordion; quando informado, mantém apenas um item aberto por vez entre os irmãosdo mesmo pai imediato. | | **Tipo** | `string` | | **Valor padrão** | `null` | ### colorMode | **Atributo** | `color-mode` | | :--- | :--- | | **Descrição** | Tema visual do Collapse/Accordion. | | **Tipo** | `"dark" \| "light"` | | **Valor padrão** | `'light'` | ### customId | **Atributo** | `custom-id` | | :--- | :--- | | **Descrição** | Identificador único do componente.Quando omitido, um valor é gerado automaticamente.> **Padrão:** valor único gerado por generateUniqueId(). | | **Tipo** | `string` | | **Valor padrão** | `generateUniqueId()` | ### divider | **Atributo** | `divider` | | :--- | :--- | | **Descrição** | Indica se o componente possui um divisor (divider) inferior. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### expansionDirection | **Atributo** | `expansion-direction` | | :--- | :--- | | **Descrição** | Direção em que o conteúdo é expandido e para a qual o ícone aponta. | | **Tipo** | `"down" \| "left" \| "right" \| "up"` | | **Valor padrão** | `'down'` | ### iconPosition | **Atributo** | `icon-position` | | :--- | :--- | | **Descrição** | Define a posição do ícone no acionador: 'left' ou 'right'. | | **Tipo** | `"left" \| "right"` | | **Valor padrão** | `'right'` | ### iconToHide | **Atributo** | `icon-to-hide` | | :--- | :--- | | **Descrição** | Classe CSS do ícone exibido quando o conteúdo está visível. | | **Tipo** | `string` | | **Valor padrão** | `'fa6-solid:chevron-up'` | ### iconToShow | **Atributo** | `icon-to-show` | | :--- | :--- | | **Descrição** | Classe CSS do ícone exibido quando o conteúdo está oculto. | | **Tipo** | `string` | | **Valor padrão** | `'fa6-solid:chevron-down'` | ### open | **Atributo** | `open` | | :--- | :--- | | **Descrição** | Controla se o collapse está aberto. | | **Tipo** | `boolean` | | **Valor padrão** | `false` | ### triggerVariant | **Atributo** | `trigger-variant` | | :--- | :--- | | **Descrição** | Forma visual do acionador sem alterar sua semântica nativa. | | **Tipo** | `"button" \| "surface" \| "text"` | | **Valor padrão** | `'surface'` | ### useIcons | **Atributo** | `use-icons` | | :--- | :--- | | **Descrição** | Controla se o identificador visual de expansão/retração será renderizado. | | **Tipo** | `boolean` | | **Valor padrão** | `true` | ## br-cookiebar ### Propriedades ### acceptButton | **Atributo** | `accept-button` | | :--- | :--- | | **Descrição** | Texto do botão primário de aceite. Padrão: `Aceitar`. | | **Tipo** | `string` | | **Valor padrão** | `'Aceitar'` | ### allAlertMessage | **Atributo** | `all-alert-message` | | :--- | :--- | | **Descrição** | Mensagem exibida abaixo do checkbox geral quando está desmarcado ou com seleção parcial. | | **Tipo** | `string` | | **Valor padrão** | --- | ### allOptOut | **Atributo** | `all-opt-out` | | :--- | :--- | | **Descrição** | Define se o cookiebar opera no padrão opt-out (`true`, recomendado) ou opt-in (`false`).- **opt-out** (`true`): botão secundário "Definir Cookies"; usuário pode configurar cookies.- **opt-in** (`false`): botão secundário "Ver Política de Cookies"; painel é somente leitura. | | **Tipo** | `boolean` | | **Valor padrão** | `true` | ### closeLabel | **Atributo** | `close-label` | | :--- | :--- | | **Descrição** | `aria-label` do botão fechar exibido no canto do painel expandido (`mode="open"`).Permite traduzir o rótulo para outros idiomas. | | **Tipo** | `string` | | **Valor padrão** | `'Fechar'` | ### cookieGroupsLabel | **Atributo** | `cookie-groups-label` | | :--- | :--- | | **Descrição** | Rótulo do título da seção de grupos de cookies. | | **Tipo** | `string` | | **Valor padrão** | `'Classes de cookies'` | ### customId | **Atributo** | `custom-id` | | :--- | :--- | | **Descrição** | Identificador único; gerado automaticamente quando omitido. | | **Tipo** | `string` | | **Valor padrão** | `generateUniqueId()` | ### defaultPanelLabel | **Atributo** | `default-panel-label` | | :--- | :--- | | **Descrição** | `aria-label` da barra de aviso de cookies (`mode="default"`).Deve descrever o propósito da região de forma sucinta (ex: "Aviso de cookies"). | | **Tipo** | `string` | | **Valor padrão** | `'Aviso de cookies'` | ### infoText | **Atributo** | `info-text` | | :--- | :--- | | **Descrição** | Texto informativo exibido na barra inferior (modo default), descrevendo a política de cookies. *(obrigatório)* | | **Tipo** | `string` | | **Valor padrão** | --- | ### linksLabel | **Atributo** | `links-label` | | :--- | :--- | | **Descrição** | `aria-label` do elemento `