1
resposta

[Sugestão] Carrinho implementado

Como pedido pela lista, aqui esta a minha implementação de carrinho. pop-up do carrinhoParte do código HTML:

<!DOCTYPE html>
<html lang="pt-br">

<head>
  <meta metacharset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>AluraBooks</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css"
    integrity="sha512-NmLkDIU1C/C88wi324HBc+S2kLhi08PN5GDeUVVVC/BVt/9Izdsc9SVeVfA1UZbY3sHUlDSyRXhCzHfr6hmPPw=="
    crossorigin="anonymous" referrerpolicy="no-referrer" />
  <link rel="stylesheet" href="style.css" />
  <script src="app/metodoForEach.js" defer></script>
  <script src="app/main.js" defer></script>
  <script src="app/metodoMap.js" defer></script>
  <script src="app/metodoFilter.js" defer></script>
  <script src="app/carrinho.js" defer></script>

  <!-- Development version
  <script src="https://unpkg.com/lucide@latest/dist/umd/lucide.js"></script> -->
</head>
<header class="header">
  <h1><img src="imagens/Logo-1.png" /></h1>
  <div class="carrinho">
    <div class="bolinha disable"></div>
    <i data-lucide="shopping-basket"></i>
    <div class="pop-up__carrinho disable">
      <div class="container__carrinho">
        <div class="titulo__carrinho">carrinho</div>
        <div class="produtos__carrinho">
        </div>
        <div class="checkout_carrinho">
          <p class="text_carrinho">Subtotal</p >
          <p class="preco_carrinho">R$999,99</p >
        </div>
      </div>
    </div>
  </div>
</header>

Parte do código JAVASCRIPT:

let carinho = []
const iconeCarinho = document.querySelector('.bolinha')
const carinhoIcone = document.querySelector('.carrinho')
const popCarrinho = document.querySelector('.pop-up__carrinho')

async function itemLivros() {
    listaItems = await document.querySelectorAll('.livro')
    listaItems.forEach(livro => {
        livro.addEventListener('click', () => {
            carinho.push(livro.id)
            iconeCarinho.classList.remove('disable')
        })
    })
}

carinhoIcone.addEventListener('click', () => {
    console.log(popCarrinho.classList.length === 1)

    if (popCarrinho.classList.length === 1 && popCarrinho.classList[1] === undefined) {
        popCarrinho.classList.add('disable')
    } else if (carinho.length > 0 && popCarrinho.classList.length == 2) {
        //const elementosSelecionados = indices.map(index => elementos[index]);
        const listaCarrinho = carinho.map(index => livros[index])
        const items = document.querySelector('.produtos__carrinho')
        const totalCarrinho = document.querySelector('.preco_carrinho')
        listaCarrinho.forEach(item => {
            items.innerHTML += `
                <div class="produto">
                    <img class="livro__imagens__carrinho" src="${item.imagem}"
                    alt="${item.alt}">
                    <h2 class="livro__titulo__carrinho">
                    ${item.titulo}
                    </h2>
                    <p class="livro__preco__carrinho" id="preco__carrinho">R$${item.preco.toFixed(2)}</p>
                </div>
            `
        })

        totalCarrinho.textContent = `R$${somarLivros(listaCarrinho)}`
        console.table(listaCarrinho)
        popCarrinho.classList.remove('disable')
    }


})

// window.addEventListener('click', () =>{
//     if (popCarrinho.classList[1] === undefined){
//         popCarrinho.classList.add('disable')
//     }
// })

Código completo: https://github.com/limonheiro/alura_books

1 resposta

muito bom! valeu por compartilhar!!!