(0.5) Estrutura de Grid na Página, Cor do Header, Main e Footer:
[x] (0.2) Utilize um sistema de grid, como o CSS Grid para estruturar a página.
[x] (0.1) Utilize a cor #4682b4 para o background do <header> e <footer>, a cor #f0f0f0 para o background do <main>.
[x] (0.2) Defina 100ch como tamanho máximo do conteúdo principal. para garantir uma boa experiência de leitura.
(0.6) Form de busca:
[x] (0.1) Crie um formulário (<form>) para o campo de busca, no header.
[x] (0.2) Deixe o input centralizado.
[x] (0.1) Adicione um botão dentro do input de busca, para ser o submit. Utilize o ícone 🔍. Adicionar cursor pointer.
[x] (0.2) Alinhe o botão dentro do campo de busca utilizando position: absolute.
(1.65) Filtro:
[x] (0.1) Utilize a tag <svg> com o código SVG fornecido para criar o ícone de filtro.
[x] (0.1) Alinhe o ícone de filtro à direita do header.
[x] (0.1) O ícone deve ser clicável e abrir um modal (<dialog>) com os filtros. Adicionar cursor pointer.
[x] (1) Exiba o número de filtros ativos, baseado na query string, ao lado do ícone de filtro (não contar page e busca). Alinhe com position: absolute.
[x] (0.35) Caso exista filtros na querystring, eles deverão ser aplicados nos inputs. Ex: url.com?busca=IBGE, o input de busca deverá ter o value "IBGE"
(2.85) Filtros em um Dialog HTML:
[x] (0.5) Utilize a tag <dialog> do HTML para criar o modal de filtros.
[x] (0.25) Inclua os campos de filtro "Tipo", "Quantidade", "De" e "Até" dentro do dialog.
[x] (0.25) Os filtros deverão ficar em um form.
[x] (0.25) Inicie sempre a quantidade com 10, e as options sendo múltiplos de 5.
[x] (0.25) Adiciona um ícone de "X" no canto superior direito do modal para fechá-lo.
[x] (0.25) Adicione um botão "Aplicar" para aplicar os filtros e fechar o modal.
[x] (1) Ao aplicar, os filtros devem ser refletidos na URL da página, com query string, e os dados devem ser atualizados (nova chamada na API).
[x] (1) A api deve ser chamada com os filtros da query string, filtrados pelo usuário.
(1.3) Listar as Notícias Dentro de uma <ul> <li>:
[x] (0.25) Após obter os dados das notícias da API, itere sobre esses dados e crie elementos <li> para cada notícia.
[x] (0.1) Liste esses elementos dentro de uma <ul>.
[x] (0.1) Cada notícia deve conter a imagem da noticia, o título em um h2, introdução em um parágrafo.
[x] (0.3) A imagem fica em um objeto stringified, e precisa ser concatenada com a url de noticias do IBGE https://agenciadenoticias.ibge.gov.br/
[x] (0.2) Mostrar as editorias da notícia com prefixo #.
[x] (0.25) Mostrar a quanto tempo a notícia foi publicada, com base na data de publicação. Ex possíveis: "Publicado há 2 dias", "Publicado hoje", "Publicado ontem".
[x] (0.1) Adicione um botão "Leia Mais" ao final de cada notícia, que ao ser clicado, abre a página da notícia no site do IBGE, em uma nova aba.
(0.7) Botoes de Paginacao no Final das Noticias em uma <ul> <li>:
[x] (0.1) Crie botões de paginação no final das notícias utilizando elementos <button> dentro de <ul><li>.
[x] (0.25) Implemente a lógica para mostrar no máximo 10 botões de páginas. Sempre mostrando a página atual no meio. Ex: Caso o usuário esteja na página 10, mostre as páginas 5, 6, 7, 8, 9, 10, 11, 12, 13, 14. Mesmo comportamento do site do IBGE
[x] (0.1) Indique visualmente a página atual com uma cor de fundo #4682b4.
[x] (0.25) Atualizar a querystring da página ao clicar em um botão de paginação. Também carregar novos dados da API com base na página selecionada.
(0.1) Remover Todos os Bullet Points de <ul> <li>:
[x] (0.1) Utilize CSS para remover os bullet points padrão de listas não ordenadas (<ul>).
(0.7) Responsividade:
[x] (0.2) Garanta que a página seja responsiva e não quebre em resoluções menores.
[x] (0.5) Utilize CSS Grid para organizar os campos de filtro em duas colunas em resoluções maiores que 760px e em uma coluna em resoluções menores.
[x] preencher os inputs data com as query strings após uma nova busca
[x] fazer com que a página seja setada para 1 se o usuário colocar um filtro que estoure condição (ex: está na pág 30 mas a consulta só retorna 20 pages)
Prova Programação WEB - 2o Bimestre
(0.5) Estrutura de Grid na Página, Cor do Header, Main e Footer:
#4682b4
para o background do<header>
e<footer>
, a cor#f0f0f0
para o background do<main>
.100ch
como tamanho máximo do conteúdo principal. para garantir uma boa experiência de leitura.(0.6) Form de busca:
<form>
) para o campo de busca, no header.position: absolute
.(1.65) Filtro:
<svg>
com o código SVG fornecido para criar o ícone de filtro.<dialog>
) com os filtros. Adicionar cursor pointer.position: absolute
.(2.85) Filtros em um Dialog HTML:
<dialog>
do HTML para criar o modal de filtros.(1.5) Buscar as Notícias da API do IBGE:
(1.3) Listar as Notícias Dentro de uma
<ul> <li>
:<li>
para cada notícia.<ul>
.https://agenciadenoticias.ibge.gov.br/
#
.(0.7) Botoes de Paginacao no Final das Noticias em uma
<ul> <li>
:<button>
dentro de<ul>
<li>
.#4682b4
.(0.1) Remover Todos os Bullet Points de
<ul> <li>
:<ul>
).(0.7) Responsividade:
Links e Recursos Adicionais
Forms para enviar a atividade - Prazo 16/06
Vídeo demonstrativo
CSS Position:
MDN - CSS Position
DevMedia - Como usar a propriedade Position
SVG utilizado no filtro:
Elemento
<dialog>
:MDN - The dialog element
Funções/APIS JS úteis:
Atualizar querystring via JS sem recarregar a página
Percorrer dados de um formulário
Percorrer valores de querystring