Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Problemas para fechar a modal

Codei os desafios até agora, porém não consigo fechar o meu modal após expandir a foto, mesmo com o código idêntico ao da correção. Segue o meu componente:

import Imagem from "../Galeria/Imagem";
import styled from "styled-components";
import BotaoIcone from "../BotaoIcone";

const Overlay = styled.div`
  background-color: rgba(0, 0, 0, 0.7);
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
`;

const DialogEstilizado = styled.dialog`
    position: absolute;
    top: 294px;
    background: transparent;
    padding: 0;
    border: 0;
    width: 1156px;
    display: flex;
    justify-content: center;
    form {
        button {
            position: relative;
            top: 20px;
            right: 60px;
        }
    }
`

const ModalZoom = ({ foto, aoFechar }) => {
  return (
    <>
      {foto && <>  
        <Overlay />
          <DialogEstilizado open={!!foto} onClose={aoFechar}>
            <Imagem foto={foto} expandida={true} />
            <form method="dialog">
              <BotaoIcone formMethod="dialog">
                <img src = "/icones/fechar.png" alt = "Ícone de fechar"/>
              </BotaoIcone>
            </form>
          </DialogEstilizado>
      </>}
    </>
  );
};

export default ModalZoom
1 resposta
solução!

Oii, Gabriel! Tudo bem?

Desculpa pela demora em responder a você.

Obrigada por disponibilizar um trecho do seu código, e você está no caminho certo! No entanto, não é usado um evento de clique no método onClose no componente DialogEstilizado.

Como sugestão, tente adicionar um evento de clique como, por exemplo, onClick= {aoFechar} no componente Overlay para fechar o modal. Para que quando o usuário clicar em qualquer lugar do Overlay, a função aoFechar será chamada, fechando a modal.

Lembre-se que as sugestões devem ser testadas e adaptadas de acordo com o seu projeto em sua totalidade.

Espero que dê certo. Qualquer dúvida, compartilhe aqui no fórum.

Bons estudos, Gabriel!