@govbr-ds/webcomponents
Version:
Biblioteca de Web Components baseado no GovBR-DS
71 lines (61 loc) • 2.46 kB
JavaScript
if (!window.elementsToListen && !window.eventsToListen) {
const elementsToListen = document.querySelectorAll('br-modal')
const eventsToListen = ['click', 'brScrimOpen', 'brScrimClose']
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 }),
})
})
})
})
}
document.getElementById('openScrimDisableClick').addEventListener('click', () => {
document.getElementById('disableClickScrim').open()
})
document.getElementById('closeScrimModal').addEventListener('click', () => {
console.log('Fechar a scrim ao clicar')
document.getElementById('disableClickScrim').close()
})
const scrimModal = document.getElementById('scrim-modal')
const disableClickScrim = document.getElementById('disableClickScrim')
// Modal com Scrim Nativo - também auto-close
scrimModal.addEventListener('brModalClose', () => {
console.log("Modal scrim nativo: evento 'brModalClose' emitido - modal fecha sozinha")
// Fechar o scrim também quando a modal fechar
disableClickScrim.close()
})
// Aguardar a modal estar completamente carregada para acessar o shadow DOM
setTimeout(() => {
// Acessar o botão de fechar dentro do shadow DOM da modal
const closeButton = scrimModal.shadowRoot?.querySelector('br-button.close')
if (closeButton) {
closeButton.addEventListener('click', () => {
console.log('Modal scrim nativo: Botão X (fechar) clicado')
scrimModal.show = false
disableClickScrim.close()
})
} else {
console.warn('Botão de fechar não encontrado no shadow DOM da modal')
}
}, 100)
// Botões da modal com scrim nativo
document.getElementById('closeScrimBackground').addEventListener('click', () => {
console.log('Modal scrim nativo: Fechar clicado')
scrimModal.show = false
disableClickScrim.close()
})
document.getElementById('scrim-save-btn').addEventListener('click', () => {
const formData = {
input: document.getElementById('scrim-input').value,
select: document.getElementById('scrim-select').value,
checkbox: document.getElementById('scrim-checkbox').checked,
}
console.log('Modal scrim nativo: Salvar clicado', formData)
scrimModal.show = false
disableClickScrim.close()
})