Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
651a0f9
estruturação inicial
Oct 21, 2020
8d848c2
Merge pull request #1 from future4code/mateus-estruturacao
mateeusduarte Oct 21, 2020
7bd0559
adicionando o componente filtro
wellingtondebrito Oct 21, 2020
47da32f
componente inicial
nohahjeong Oct 21, 2020
9b26349
Merge pull request #2 from future4code/nohah
nohahjeong Oct 21, 2020
29d5e46
layout padrao
Oct 21, 2020
b977974
Merge pull request #3 from future4code/wellington-filtro
wellingtondebrito Oct 21, 2020
fb374e7
Merge branch 'master' into home
leticia-chijo Oct 21, 2020
8e00a4f
Merge pull request #5 from future4code/home
mateeusduarte Oct 21, 2020
2cbefa8
atualizacoes home
Oct 21, 2020
c5988df
Merge pull request #6 from future4code/mateus-home-ajustes
mateeusduarte Oct 21, 2020
c6eb1e0
ajustes
Oct 21, 2020
32a1b47
Merge pull request #7 from future4code/componentizacao-da-home
mateeusduarte Oct 21, 2020
87658a6
componentizacao
Oct 21, 2020
d0604a5
Merge pull request #8 from future4code/componentizacao-da-home
wellingtondebrito Oct 21, 2020
90bfe27
arrumei o diretorio do Carrinho
nohahjeong Oct 21, 2020
7ac8e99
Merge pull request #9 from future4code/nohah-quarta-feira
wellingtondebrito Oct 22, 2020
af62fdd
colocando a lógica do filtro
wellingtondebrito Oct 22, 2020
4d68e37
Merge pull request #10 from future4code/atualizacao-filtro
wellingtondebrito Oct 22, 2020
c7c154e
trabalhei na app.js e nos componentes home e produto
nohahjeong Oct 22, 2020
386499e
Merge pull request #11 from future4code/nohah-quinta-feira
nohahjeong Oct 22, 2020
c4eedcc
funcionalidades carrinho
Oct 22, 2020
35b0f5e
Merge pull request #12 from future4code/mateus-ajustes
mateeusduarte Oct 22, 2020
700db98
carrinho
Oct 22, 2020
313fa38
filtros na home mais ou menos funcionando
nohahjeong Oct 22, 2020
aea7200
Merge pull request #14 from future4code/nohah-quinta-tarde
nohahjeong Oct 22, 2020
0e7db2c
Home com os filtros corrigidos no plantao
nohahjeong Oct 22, 2020
bb1e538
Merge pull request #16 from future4code/nohah-quinta-tarde
nohahjeong Oct 23, 2020
a8471ae
funcionalidade do carrionho
Oct 23, 2020
7bc24af
carrinho atualizado
Oct 23, 2020
d05b224
Merge branch 'master' into funcionalidade-carrinho
mateeusduarte Oct 23, 2020
9dfc857
Merge pull request #13 from future4code/funcionalidade-carrinho
mateeusduarte Oct 23, 2020
d4430c8
comittada final
Oct 23, 2020
61717a2
Merge pull request #17 from future4code/branch-nova
Oct 27, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14,078 changes: 14,078 additions & 0 deletions package-lock.json

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
"@testing-library/user-event": "^7.1.2",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-scripts": "3.4.1"
"react-scripts": "3.4.1",
"styled-components": "^5.2.0"
},
"scripts": {
"start": "react-scripts start",
Expand Down
38 changes: 0 additions & 38 deletions src/App.css

This file was deleted.

189 changes: 168 additions & 21 deletions src/App.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,173 @@
import React from 'react';
import logo from './logo.svg';
import './App.css';
import styled from "styled-components"
import {Home} from "./components/home/Home"
import {Carrinho} from "./components/carrinho/Carrinho"
import Filtro from './components/filtro/Filtro';

function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
const ContainerSite = styled.div`
display:flex;
justify-content:space-between;
margin:10px;
`
const produtos = [
// produtos que aparecem na tela principal
{
id: 1,
nome: "Big Falcon Rocket",
preco: 22,
urlDaImagem: "https://cdn.vox-cdn.com/thumbor/ERS1_Blbu0L6QQtEPQCM7smC0_E=/0x0:888x501/1200x800/filters:focal(373x180:515x322)/cdn.vox-cdn.com/uploads/chorus_image/image/62364681/Screen_Shot_2018_09_17_at_9.21.53_PM.0.png",
quantidade:0
},
{
id: 2,
nome: "Falcon Heavy",
preco: 87,
urlDaImagem: "https://super.abril.com.br/wp-content/uploads/2018/02/spacex-falconheavy.png",
quantidade:0
},
{
id: 3,
nome: "Apollo 11",
preco: 87,
urlDaImagem: "https://assets.b9.com.br/wp-content/uploads/2019/07/national-geographic-apollo11.jpg",
quantidade:0
},
{
id: 4,
nome: "Space Shuttle",
preco: 87,
urlDaImagem: "https://cdn.mos.cms.futurecdn.net/ka5acHNs3trfycsfvB5aeY-1200-80.jpg",
quantidade:0
},
{
id: 5,
nome: "Millennium Falcon",
preco: 67,
urlDaImagem: "https://images.virgula.com.br/2015/12/Millennium-Falcon_018ea796.jpeg",
quantidade:0
},
{
id: 6,
nome: "X-wing starfighter",
preco: 79,
urlDaImagem: "https://www.wallpaperup.com/uploads/wallpapers/2015/09/28/811207/cd04cc40bd2e7060c7a2b417b1743b74-700.jpg",
quantidade:0
},
{
id: 7,
nome: "USS Enterprise (NCC-1701-D)",
preco: 82,
urlDaImagem: "https://i.pinimg.com/originals/b7/23/64/b723645d40bc83af75b2838c470d7a5a.jpg",
quantidade:0
},
{
id: 8,
nome: "USS Voyager",
preco: 91,
urlDaImagem: "https://upload.wikimedia.org/wikipedia/pt/5/58/USS_Voyager.jpg",
quantidade:0
},
]
const novoProduto= [...produtos]



class App extends React.Component {
state = {
filtroMin: 40,
filtroMax: 100,
filtroNome: "",
carrinhoDeCompras: [
// produtos que aparecem na tela principal

],
valorCompra: 0,
}
adicionaProdutoCarrinho = (idNovo,nomeNovo,precoNovo,urlDaImagemNovo) => {
novoProduto.map((produto) => {
if(idNovo === produto.id){
produto.quantidade += 1
this.setState({
valorCompra:produto.preco + this.state.valorCompra
})
}
let novoCarrinho = novoProduto.filter(function(e){
return e.quantidade > 0;
})
this.setState({
carrinhoDeCompras:novoCarrinho
})

})
}
removeCarrinho = (carrinho) => {
// Fórmula que remove produto do carrinho e subtrai valor do prouto do valor total.
novoProduto.map((produto)=>{
if(carrinho.id === produto.id){
produto.quantidade -= 1
this.setState({
valorCompra:this.state.valorCompra - carrinho.preco
})
}
let novoCarrinho = novoProduto.filter(function(e){
return e.quantidade > 0;
})
this.setState({
carrinhoDeCompras:novoCarrinho
})

})
}
onChangeFiltroMin = (event) => {
const filtroMin = event.target.value
this.setState({
filtroMin:filtroMin
})
}
onChangeFiltroMax = (event) => {
const filtroMax = event.target.value
this.setState({
filtroMax:filtroMax
})
}
onChangeFiltroNome = (event) => {
const filtroNome = event.target.value
this.setState({
filtroNome:filtroNome
})
}
render(){
return (
<ContainerSite>
<Filtro
filtroMin={this.state.filtroMin}
filtroMax={this.state.filtroMax}
filtroNome={this.state.filtroNome}
onChangeFiltroMax={this.onChangeFiltroMax}
onChangeFiltroMin={this.onChangeFiltroMin}
onChangeFiltroNome={this.onChangeFiltroNome}
/>
<Home
produtos={produtos}
carrinho={this.state.carrinhoDeCompras}
adicionaCarrinho={this.adicionaCarrinho}
adicionaProdutoCarrinho = {this.adicionaProdutoCarrinho}
valorCompra={this.state.valorCompra}
somaValorCompra={this.somaValorCompra}
filtroMin={this.state.filtroMin}
filtroMax={this.state.filtroMax}
filtroNome={this.state.filtroNome}
/>
<Carrinho
produtos={produtos}
carrinho={this.state.carrinhoDeCompras}
removeCarrinho={this.removeCarrinho}
valorCompra={this.state.valorCompra}
somaValorCompra={this.somaValorCompra}
/>
</ContainerSite>
);
}
}

export default App;
28 changes: 28 additions & 0 deletions src/components/carrinho/Carrinho.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import React from "react";
import {ItemDoCarrinho} from "./ItemDoCarrinho";
import styled from 'styled-components';

const ContainerDoCarrinho = styled.div`
border: 1px solid black;
height: 200vh;
width: 20%;
padding: 10px;
`
const ContainerDaListaDeItens = styled.div`
padding: 10px;
`
export class Carrinho extends React.Component {
render() {
return(
<ContainerDoCarrinho>
<h1>Carrinho</h1>
<ContainerDaListaDeItens>
<ItemDoCarrinho
carrinho={this.props.carrinho}
removeCarrinho={this.props.removeCarrinho}/>
</ContainerDaListaDeItens>
<p>Total: R${this.props.valorCompra},00</p>
</ContainerDoCarrinho>
)
}
}
44 changes: 44 additions & 0 deletions src/components/carrinho/ItemDoCarrinho.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import React from "react";
import styled from 'styled-components';
import {Produto} from "./../home/Produto";

const ContainerDosItems = styled.div`
display: flex;
flex-direction:column;
justify-content: space-evenly;
align-items: center;
border-bottom: 1px dashed black;
`
const Item = styled.div`
display:flex;`
const Botao = styled.button`
padding: 0;
height: 25px;
`
const ImagemCarrinho = styled.img`
height:5vh;
width:5vh;`
const FlexInformacoesItem = styled.div`
display:flex;
flex-direction:column;
`
export class ItemDoCarrinho extends React.Component {
render() {
return(
<ContainerDosItems>
{this.props.carrinho.map((produto) => {
return (
<Item>
<FlexInformacoesItem>
<ImagemCarrinho src={produto.urlDaImagem}/>
<h4>{produto.quantidade}:{produto.nome}:R${produto.preco}</h4>
</FlexInformacoesItem>
<Botao onClick={()=>this.props.removeCarrinho(produto)}>
Remover
</Botao>
</Item>
)})}
</ContainerDosItems>
)
}
}
41 changes: 41 additions & 0 deletions src/components/filtro/Filtro.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import React from 'react';
import styled from 'styled-components'


const ContainerFiltro = styled.div`
display:flex;
flex-direction:column;
border: 1px solid black;
height:100vh;
width:20%;`



export class Filtro extends React.Component{
render(){
return(
<ContainerFiltro>
<h1>Filtro</h1>
<label>Valor Minimo</label>
<input
onChange={this.props.onChangeFiltroMin}
type="number"
value={this.props.filtroMin}
/>
<label>Valor Máximo</label>
<input
onChange={this.props.onChangeFiltroMax}
typer="number"
value={this.props.filtroMax}
/>
<label>Buscar Produto</label>
<input
onChange={this.props.onChangeFiltroNome}
value={this.props.filtroNome}
/>
</ContainerFiltro>
)
}
}

export default Filtro
Loading
Loading