fix: botao mostrar/ocultar do log nao abria (elemento interativo dentro de summary nao propaga toggle nativo)
This commit is contained in:
@@ -86,6 +86,15 @@
|
|||||||
botao.textContent = aberto ? "Ocultar" : "Mostrar";
|
botao.textContent = aberto ? "Ocultar" : "Mostrar";
|
||||||
botao.setAttribute("aria-expanded", aberto ? "true" : "false");
|
botao.setAttribute("aria-expanded", aberto ? "true" : "false");
|
||||||
};
|
};
|
||||||
|
// Um <button> dentro de <summary> é ele mesmo um elemento interativo:
|
||||||
|
// o navegador não propaga o clique para o toggle nativo do <details>
|
||||||
|
// quando o clique começa em outro controle interativo. Por isso o
|
||||||
|
// toggle precisa ser feito manualmente aqui.
|
||||||
|
botao.addEventListener("click", function (evento) {
|
||||||
|
evento.preventDefault();
|
||||||
|
secao.open = !secao.open;
|
||||||
|
atualizar();
|
||||||
|
});
|
||||||
secao.addEventListener("toggle", atualizar);
|
secao.addEventListener("toggle", atualizar);
|
||||||
atualizar();
|
atualizar();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -118,3 +118,17 @@ def test_pagina_log_secoes_comecam_fechadas(monkeypatch):
|
|||||||
assert texto.count('<details class="secao-log">') == 2
|
assert texto.count('<details class="secao-log">') == 2
|
||||||
assert "<details class=\"secao-log\" open>" not in texto
|
assert "<details class=\"secao-log\" open>" not in texto
|
||||||
assert "<details class='secao-log' open>" not in texto
|
assert "<details class='secao-log' open>" not in texto
|
||||||
|
|
||||||
|
|
||||||
|
def test_pagina_log_botao_toggle_tem_handler_de_clique_proprio(monkeypatch):
|
||||||
|
"""Regressão: um <button> dentro de <summary> não propaga o clique para
|
||||||
|
o toggle nativo do <details> — precisa de um listener de clique
|
||||||
|
explícito que abre/fecha a seção manualmente (ver log.html)."""
|
||||||
|
monkeypatch.setattr(router_log.db_log, "listar", lambda limite=20: [])
|
||||||
|
monkeypatch.setattr(router_log.n8n_client, "listar_envios", lambda limite=50: [])
|
||||||
|
monkeypatch.setattr(router_log.n8n_client, "configurado", lambda: False)
|
||||||
|
|
||||||
|
resposta = client.get("/log")
|
||||||
|
assert resposta.status_code == 200
|
||||||
|
assert 'botao.addEventListener("click"' in resposta.text
|
||||||
|
assert "secao.open = !secao.open" in resposta.text
|
||||||
|
|||||||
Reference in New Issue
Block a user