Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Minha solução para Alura Tintas em esoque

Além de criar um botão que some com as tintas e aparece, criei outros dois botões que mostram só as tintas para exterior e outro que mostra as tintas para o interior..

const operacao = document.querySelectorAll("[data-buttoncontrol]");

const estoque = document.querySelectorAll("[data-tipo]");

const botao = {
    mostrarTudo: 'mostrar-tudo',
    limparTudo: 'limpar-tudo',
    limparInterior: 'limpar-interior',
    limparExterior: 'limpar-exterior'
};

operacao.forEach((element) => {
    element.addEventListener("click", (evento) => {
        const tipoBotao = element.dataset.buttoncontrol;

        switch (tipoBotao) {

            case botao.mostrarTudo:
                estoque.forEach((elemento) => alterarVisibilidade(elemento, false));
                break;

            case botao.limparTudo:
                estoque.forEach((elemento) => alterarVisibilidade(elemento, true));
                break;

            case botao.limparInterior:
                estoque.forEach((elemento) => {
                    alterarVisibilidade(elemento, elemento.dataset.tipo === "tinta-interior");
                });
                break;

            case botao.limparExterior:
                estoque.forEach((elemento) => {
                    alterarVisibilidade(elemento, elemento.dataset.tipo === "tinta-exterior");
                });
                break;
        }

    })
})

function alterarVisibilidade(elemento, esconder) {
    if (esconder) {
        elemento.setAttribute("hidden", true);
    } else {
        elemento.removeAttribute("hidden")
    }
}

Html ficou assim:

<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>Manipulando o DOM - Aula 3</title>
  <link rel="stylesheet" href="./style.css">
</head>
<body>

  <button data-buttoncontrol="mostrar-tudo">Aluratintas em estoque:</button>

  <ul class="lista">
    <li cor="laranja" data-tipo="tinta-exterior" class="item" item>Tinta laranja</li>
    <li cor="vermelho" data-tipo="tinta-interior" class="item" item>Tinta vermelha</li>
    <li cor="branco" data-tipo="tinta-interior" class="item" item>Tinta branca</li>
    <li cor="amarelo" data-tipo="tinta-exterior" class="item" item>Tinta amarela</li>
    <li cor="rosa" data-tipo="tinta-exterior" class="item" item>Tinta rosa</li>
    <li cor="preto" data-tipo="tinta-exterior" class="item" item>Tinta preta</li>
  </ul>

  <button data-buttoncontrol="limpar-tudo">Limpar estoque:</button>
  <button data-buttoncontrol="limpar-interior">Mostrar tintas para exterior:</button>
  <button data-buttoncontrol="limpar-exterior">Mostrar tintas para interior:</button>

  <a href="https://alura.com.br/" target="_blank"><img src="https://www.alura.com.br/assets/img/home/alura-logo.svg" alt="" class="alura-logo"></a>

</body>

<script src="./jss/main.js"></script>
</html>

e o css não mudei em relação ao dá aula:

* {
    margin: 0;
    padding: 0;
  }
  
  body {
    font-family: "Roboto Mono", monospace;
    min-height: 400px;
    min-width: 450px;
    background-size: 80vh;
    color: rgb(0, 0, 0);
    background-color: rgb(214, 214, 214);;
    background-size: cover;
    background-repeat: no-repeat;
    height: 100vh;
    font-size: 24px;
    font-weight: bold;
    display: flex;
    align-items: center;
    flex-direction: column;
  }
  
  button {
    font-size: 24px;
    font-family: "Futura Lt BT", sans-serif;
    background-color: black;
    background-repeat: no-repeat;
    cursor: pointer;
    overflow: hidden;
    outline: none;
    padding: 8px 20px 8px 20px;
    color: white;
    box-shadow: 0px 0px 5px gray;
    border-radius: 5px 5px 0 0;
    border: none;
    transition: 500ms;
    opacity: 0.8;
    margin: 30px 0;
  }
  
  button:hover {
    color: white;
    background-color: gray;
  }
  
  button:active {
    color: black;
    background-color: white;
  }
  
  .lista {
    padding: 20px;
    list-style-type: none;
    border: 4mm ridge rgba(234, 122, 11, 0.992);
  }
  
  .alura-logo {
    width: 150px;
    position: absolute;
    top: 2%;
    right: 2%;
  }
  
  [cor="laranja"] {
    color: orange;
  }
  
  [cor="vermelho"] {
    color: red;
  }
  
  [cor="branco"] {
    color: white;
  }
  
  [cor="amarelo"] {
    color: yellow;
  }
  
  [cor="rosa"] {
    color: pink;
  }
  
  [cor="preto"] {
    color: black;
  }
3 respostas

Olá, Tarcísio!

Parece que o seu código ficou muito bom e deve estar funcionando corretamente, porém não tive a oportunidade de testar o seu projeto devido à falta das suas modificações no HTML. Caso queira compartilhar comigo e com outras pessoas que possam se inspirar no seu projeto, sinta-se à vontade.

Reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

fala Victor, tudo bom?

Boa, acabei de atualizar meu post colocando o HTML e CSS...

Obrigado!!

solução!

Oi Tarcísio!

Agora consegui testar e ficou top demais, adorei suas implementações, deixou o projeto muito completinho e deu ao usuário a capacidade e organização, sensacional!

Se estiver com alguma dúvida estamos aí, abraços!