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

Bugs no final do projeto

<!DOCTYPE html>
<html>
<head>
    <title>Ceep - Gerenciamento de Lembretes</title>
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="css/reset.css">
    <link rel="stylesheet" type="text/css" href="css/base.css">
    <link rel="stylesheet" type="text/css" href="css/blocos/header.css">
    <link rel="stylesheet" type="text/css" href="css/blocos/card.css">
    <link rel="stylesheet" type="text/css" href="css/blocos/new-card.css">
</head>
<body>
    <header class="header container">
        <h1 class="header-title">Ceep</h1>
        <nav class="header-menu">
            <ul>
                <li class="header-button">
                    <a>Linhas</a>
                </li>
                <li class="header-button">
                    <a>?</a>
                </li>
            </ul>
        </nav>
    </header>
    <form class="new-card">
        <textarea class="new-card-content" placeholder="Digite aqui o conteúdo de seu novo cartão"></textarea>
        <input class="new-card-submit" type="submit" name="salvar" value="salvar">
    </form>
    <section class="container">
        <ol class="wrap-card">
            <li class="card card_colorFirst" data-color="first">
            <nav class="wrap-card-btns">
                <ul>
                    <li class="btn-pad card_delete">
                        <a href="">Excluir</a>
                    </li>
                    <li class="btn-pad card_edit">
                        <a href="">Editar</a>
                    </li>
                    <li class="btn-pad card-colors isActive" data-color="first">
                    <a href="#">Azul</a>
                    </li>
                    <li class="btn-pad card-colors" data-color="second">
                    <a href="#">Amarelo</a>
                    </li>
                    <li class="btn-pad card-colors" data-color="third">
                    <a href="#">Vermelho</a>
                    </li>
                    <li class="btn-pad card-colors" data-color="fourth">
                    <a href="#">Verde</a>
                    </li>
                </ul>
            </nav>
            <p class="card-content" contenteditable="false">
                Bem-vindo ao Ceep
            </p>
            </li><!--
            -->
        </ol>
    </section>
    <script type="text/javascript" src="JS/blocos/new-card.js"></script>
    <script type="text/javascript" src="JS/blocos/card.js"></script>
</body>
</html>

JS

var $wrapCards = document.querySelector('.wrap-card');
var $cardColors = document.querySelectorAll('.card-colors');

$wrapCards.addEventListener('click', function(event){
    var $this = event.target;
    var $card = $this.parentNode.parentNode.parentNode;
    var $cardContent = $card.querySelector('.card-content');

    if($this.dataset.color){
        $card.dataset.color = $this.dataset.color;

        for (var position = 0; position < $cardColors.length; position++) {
            $cardColors[position].classList.remove('isActive');
        };
        $this.classList.add('isActive');
    };

    if ($this.classList.contains('card_delete')){
        $card.remove();
    };

    if ($this.classList.contains('card_edit')) {

        if ($cardContent.getAttribute('contenteditable') == 'false') {
            $cardContent.setAttribute('contenteditable', 'true');
            $cardContent.focus();
            $this.classList.add('isActive');
        }else{
            $cardContent.setAttribute('contenteditable', 'false');
            $cardContent.blur();
            $this.classList.remove('isActive');
        };
    };
});
var $newCardForm = document.querySelector('.new-card');
var $newCardContent = document.querySelector('.new-card-content');
var $newCardSubmit = document.querySelector('.new-card-submit');
var $newCardError = document.createElement('span');

    $newCardForm.addEventListener('submit', function(event){
        //não permite que o botão recarregue a página
        event.preventDefault();
        if ($newCardContent.value == '') {

            //Caso esteja vazio, mostra a mensagem de erro
            $newCardError.textContent = 'Por favor, preencha o campo acima para gerar seu cartão';
            $newCardError.classList.add('new-card-error');
            //Adiciona a mensagem antes do botão de envio, abaixo do campo de texto
            $newCardForm.insertBefore($newCardError, $newCardSubmit);

        }else{

            var $wrapCards = document.querySelector('.wrap-card')
            //Seleciona o primeiro cartão existente na página
            var $firstCard = document.querySelector('.card')
            //Clona o cartão com toda a sua árvore de filhos e classes
            var $copyCard = $firstCard.cloneNode(true);

            $copyCard.querySelector('.card-content').textContent = $newCardContent.value;
            $wrapCards.insertBefore($copyCard, $firstCard)

        };
    });

    //Caso a pessoa digite algo após o erro ser mostrado, a mensagem de erro é ocultada
    $newCardContent.addEventListener('input', function(){

        var $removeError = document.querySelector('.new-card-error');
        //verifica se a mensagem de erro existe, para evitar loops ao digitar o texto
        if($newCardError != null){ 

            $newCardError.remove();

        };

    });

Bugs e outros :

  • Ao clicar no cartão (perto das bordas) o fundo do container fica da mesma cor que o cartão.
  • Não tem o botão de refresh
  • Os outros botões do header não funcionam.
  • Caso o usuário feche todos os cartões, não é possível criar um novo
1 resposta
solução!

Olá, Gieandes.

Vou separar as suas perguntas.

1) Ao clicar no cartão (perto das bordas) o fundo do container fica da mesma cor que o cartão?

Acredito que esse problema seja no CSS. Você pode me mandar o CSS para eu dar uma olhada?

2) Não tem o botão de refresh?

Essa funcionalidade não foi implementada no curso. Vai ficar no módulo 2 do curso.

3) Os outros botões do header não funcionam?

Essas funcionalidades serão mostrada no segundo módulo do curso.

4) Caso o usuário feche todos os cartões, não é possível criar um novo?

O código do cartão que está no HTML, não pode aparecer para o usuário para que o JS consiga utilizar ele como referência para duplicar o cartão.

Se tiver qualquer outra dúvida só dar um toque. :-)