UNPKG

@govbr-ds/webcomponents

Version:

Biblioteca de Web Components baseado no GovBR-DS

112 lines (94 loc) 3.65 kB
if (!window.elementsToListen && !window.eventsToListen) { const elementsToListen = document.querySelectorAll('br-tab') const eventsToListen = ['click'] elementsToListen.forEach((domElement) => { eventsToListen.forEach((event) => { domElement.addEventListener(event, function (event) { console.log({ Evento: event.type, Elemento: domElement.outerHTML, ...(event.detail && { Detail: event.detail }), ...(event.data && { Data: event.data }), }) }) }) }) } // Função para inicializar o teste de reatividade function inicializarTesteReatividade() { const tab = document.getElementById('tab-reativo') const item1 = document.getElementById('item1') const item2 = document.getElementById('item2') const item3 = document.getElementById('item3') const log = document.getElementById('log') // Se os elementos não existirem, não faz nada (não é a página de reatividade) if (!tab || !item1 || !item2 || !item3 || !log) { return } let contador = 12 let onlyIcon = false let tituloIndex = 0 const titulos = ['Equipe', 'Time', 'Squad', 'Grupo', 'Colaboradores'] const icones = ['fa-solid:folder', 'fa-solid:briefcase', 'fa-solid:rocket', 'fa-solid:star'] let iconeIndex = 0 function adicionarLog(mensagem) { const timestamp = new Date().toLocaleTimeString() log.textContent += `[${timestamp}] ${mensagem}\n` log.scrollTop = log.scrollHeight } // Escuta eventos do componente pai tab.addEventListener('brTabChange', (e) => { adicionarLog(`brTabChange: Tab ${e.detail.tabIndex} ativado (ID: ${e.detail.tabId})`) }) // Escuta eventos dos filhos item1.addEventListener('brTabItemPropsChange', () => { adicionarLog('brTabItemPropsChange: Propriedades do item1 (Equipe) mudaram') }) item2.addEventListener('brTabItemPropsChange', () => { adicionarLog('brTabItemPropsChange: Propriedades do item2 (Projetos) mudaram') }) item3.addEventListener('brTabItemPropsChange', () => { adicionarLog('brTabItemPropsChange: Propriedades do item3 (Tarefas) mudaram') }) // Torna as funções globais para serem acessadas pelos botões HTML window.mudarTitulo = function () { tituloIndex = (tituloIndex + 1) % titulos.length const novoTitulo = titulos[tituloIndex] item1.setAttribute('tab-item-title', novoTitulo) adicionarLog(`Ação: Título alterado para "${novoTitulo}"`) } window.mudarIcone = function () { iconeIndex = (iconeIndex + 1) % icones.length const novoIcone = icones[iconeIndex] item2.setAttribute('icon', novoIcone) adicionarLog(`Ação: Ícone alterado para "${novoIcone}"`) } window.mudarContador = function () { contador++ item2.setAttribute('counter', contador.toString()) adicionarLog(`Ação: Contador incrementado para ${contador}`) } window.alternarOnlyIcon = function () { onlyIcon = !onlyIcon if (onlyIcon) { item1.setAttribute('only-icon', '') } else { item1.removeAttribute('only-icon') } adicionarLog(`Ação: Only Icon ${onlyIcon ? 'ativado' : 'desativado'}`) } window.mudarTodas = function () { window.mudarTitulo() setTimeout(() => window.mudarIcone(), 100) setTimeout(() => window.mudarContador(), 200) setTimeout(() => window.alternarOnlyIcon(), 300) } // Log inicial adicionarLog('Página carregada. Teste a reatividade com os botões acima.') } // Executa quando o DOM estiver pronto if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', inicializarTesteReatividade) } else { inicializarTesteReatividade() }