Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
c4f6e9c
Container de produtos responsivo
ricardo-ramos Jan 18, 2021
7c0b746
Merge pull request #1 from future4code/labe-commerce2-ricardo
ricardo-ramos Jan 18, 2021
8272107
Filtro
Pereira-Araujo Jan 18, 2021
0c03214
Merge branch 'master' into lab_commerce_araujo
Pereira-Araujo Jan 18, 2021
8a83f47
filtros
Pereira-Araujo Jan 18, 2021
c3058ef
Filtro estilizado dentro do App
Pereira-Araujo Jan 18, 2021
8ca8b36
✅Filtro estilizado dentro do App
Pereira-Araujo Jan 18, 2021
e43d3c0
responsividade considerando o filtro - ainda a resolver o que fazer n…
ricardo-ramos Jan 19, 2021
e88305e
tentativa de responsividade, mas ainda há o que melhorar - se possíve…
ricardo-ramos Jan 19, 2021
5751475
Merge pull request #4 from future4code/labe-commerce2-ricardo
ricardo-ramos Jan 19, 2021
c1ffb24
carrinho incluído, mas não é possível adicionar produtos, pois dá erro
ricardo-ramos Jan 21, 2021
003caaf
Merge pull request #5 from future4code/labe-commerce2-ricardo
ricardo-ramos Jan 21, 2021
d23c3df
carrinho funcionando
ricardo-ramos Jan 22, 2021
cfb29bd
show
Pereira-Araujo Jan 22, 2021
9c4c4df
tentando resolver
ricardo-ramos Jan 22, 2021
9ae3dcf
Merge pull request #8 from future4code/labe-commerce2-ricardo
ricardo-ramos Jan 22, 2021
cd08d37
correção do package.lock e cursor: pointer em links
ricardo-ramos Jan 23, 2021
3259ce3
Merge pull request #9 from future4code/labe-commerce2-ricardo
ricardo-ramos Jan 23, 2021
12f5af4
notificação ao clicar em adicionar ao carrinho
ricardo-ramos Jan 24, 2021
23b02a8
Merge pull request #10 from future4code/labe-commerce2-ricardo
ricardo-ramos Jan 24, 2021
f72d4b2
tentativas com o filtro
Pereira-Araujo Jan 25, 2021
9f10a37
Merge branch 'master' into commerce-araujo
Pereira-Araujo Jan 25, 2021
0ddc945
Merge pull request #11 from future4code/commerce-araujo
Pereira-Araujo Jan 30, 2021
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
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"git.ignoreLimitWarning": true
}
13,935 changes: 13,935 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.1"
},
"scripts": {
"start": "react-scripts start",
Expand Down
325 changes: 301 additions & 24 deletions src/App.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,303 @@
import React from 'react';
import logo from './logo.svg';
import './App.css';

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>
);
import React from "react";
import styled from "styled-components";
import GlobalStyle from "./globalStyles";
import { Filtros } from "./Components/Filtros/Filtros";
import ContainerProdutos from "./Components/Produto/ContainerProdutos";
import Carrinho from "./Components/Carrinho/Carrinho"
import iconeCarrinho from "./img/carrinho.png"

const ProdutosMain = styled.main`
display: flex;
height: 100vh;
width: 100vw;

.iconeCarrinho {
bottom: 36px;
cursor: pointer;
position: absolute;
right: 28px;
width: 4%;
}
`


// FILTRO
const produto = [
{
id: 1,
nome: "item A",
valor: 10.0,
caminhoDaImagem: "https://picsum.photos/200/200",
},

{
id: 2,
nome: "item B",
valor: 20.0,
caminhoDaImagem: "https://picsum.photos/200/201",
},

{
id: 3,
nome: "item C",
valor: 30.0,
caminhoDaImagem: "https://picsum.photos/201/202",
},

{
id: 4,
nome: "item D",
valor: 40.0,
caminhoDaImagem: "https://picsum.photos/201/203",
},

{
id: 5,
nome: "item E",
valor: 50.0,
caminhoDaImagem: "https://picsum.photos/201/200",
},

{
id: 6,
nome: "item F",
valor: 60.0,
caminhoDaImagem: "https://picsum.photos/202/200",
},

{
id: 7,
nome: "item G",
valor: 70.0,
caminhoDaImagem: "https://picsum.photos/203/200",
},

{
id: 8,
nome: "item H",
valor: 80.0,
caminhoDaImagem: "https://picsum.photos/201/201",
},
]

// FILTRO






class App extends React.Component {
state = {

produtos: [
{
id: 1,
nome: "item A",
valor: 10.0,
caminhoDaImagem: "https://picsum.photos/200/200",
},

{
id: 2,
nome: "item B",
valor: 20.0,
caminhoDaImagem: "https://picsum.photos/200/201",
},

{
id: 3,
nome: "item C",
valor: 30.0,
caminhoDaImagem: "https://picsum.photos/201/202",
},

{
id: 4,
nome: "item D",
valor: 40.0,
caminhoDaImagem: "https://picsum.photos/201/203",
},

{
id: 5,
nome: "item E",
valor: 50.0,
caminhoDaImagem: "https://picsum.photos/201/200",
},

{
id: 6,
nome: "item F",
valor: 60.0,
caminhoDaImagem: "https://picsum.photos/202/200",
},

{
id: 7,
nome: "item G",
valor: 70.0,
caminhoDaImagem: "https://picsum.photos/203/200",
},

{
id: 8,
nome: "item H",
valor: 80.0,
caminhoDaImagem: "https://picsum.photos/201/201",
},
],

carrinho: [],
valorTotal: "",
carrinhoNaTela: false,


minimo: null, //FILTRO
maximo: null,//FILTRO
texto: '',//FILTRO

}

// FILTRO

onChangeMinimo = (event) => {
this.setState({minimo: event.target.value})

}

onChangeMaximo = (event) => {
this.setState({maximo: event.target.value})
}

onChangeTexto = (event) => {
this.setState({texto: event.target.value})
}


// FILTRO



mostrarCarrinho = () => {
this.setState({ carrinhoNaTela: !this.state.carrinhoNaTela })
}

adicionarAoCarrinho = (produto) => {
let validarCarrinho = [...this.state.carrinho]
let listaCarrinho = validarCarrinho.filter (
(objeto) => objeto.id === produto.id
)

if (listaCarrinho.length > 0) {
listaCarrinho[0].quantidade += 1
} else {
const novoObjeto = {
id: produto.id,
nome: produto.nome,
valor: produto.valor,
quantidade: 1,
}
validarCarrinho.push (novoObjeto);
}
this.setState({ carrinho: validarCarrinho })
this.definirNotificacaoCarrinho(true)
setTimeout (() => this.definirNotificacaoCarrinho (false), 4000)
}

somarProdutoNoCarrinho = (objeto) => {
let validarCarrinho= [...this.state.carrinho]
let listaCarrinho = validarCarrinho.filter (
(objetoNoCarrinho) => objeto.id === objetoNoCarrinho.id
)
listaCarrinho[0].quantidade += 1
this.setState ({ carrinho: validarCarrinho })
}

subtrairProdutoNoCarrinho = (objeto) => {
let validarCarrinho = [...this.state.carrinho]
let listaCarrinho = validarCarrinho.filter (
(objetoNoCarrinho) => objeto.id === objetoNoCarrinho.id
)
if (listaCarrinho[0].quantidade > 1) {
listaCarrinho[0].quantidade -= 1
}
this.setState({ carrinho: validarCarrinho })
}

excluirProdutoDoCarrinho = (objeto) => {
let validarCarrinho = [...this.state.carrinho];
let listaCarrinho = validarCarrinho.filter (
(objetoNoCarrinho) => objeto.id === objetoNoCarrinho.id
)
validarCarrinho.splice(listaCarrinho, 1)
this.setState({ carrinho: validarCarrinho })
}

limparTodoOCarrinho = () => { this.setState({ carrinho: [] }) }


// FILTROS

filtrados = () => {
return this.state.produtos
.filter((produto) => this.state.maximo ? produto.valor < this.state.maximo : true)
.filter((produto) => this.state.minimo ? produto.valor > this.state.minimo : true)
.filter((produto) => this.state.texto ? produto.nome.includes(this.state.texto) : true)
}


//FILTROS



render() {
let valorTotal = 0

this.state.carrinho.map (
(objeto) => {
valorTotal += objeto.valor * objeto.quantidade
}
)
const { produtos } = this.state
return (
<ProdutosMain>
<GlobalStyle />
{/* //FILTRO */}
<Filtros
minimo={this.state.minimo}
maximo={this.state.maximo}
texto={this.state.texto}
onChangeMinimo={this.onChangeMinimo}
onChangeMaximo={this.onChangeMaximo}
onChangeTexto={this.onChangeTexto}
/>


<ContainerProdutos renderizarContainer = {produtos}
minimo={this.state.minimo}
maximo={this.state.maximo}
texto={this.state.texto}


adicionarAoCarrinho = {this.adicionarAoCarrinho}
/>
{this.state.carrinhoNaTela && (
<Carrinho
carrinho={this.state.carrinho}
somarProdutoNoCarrinho={this.somarProdutoNoCarrinho}
subtrairProdutoNoCarrinho={this.subtrairProdutoNoCarrinho}
excluirProdutoDoCarrinho={this.excluirProdutoDoCarrinho}
limparTodoOCarrinho={this.limparTodoOCarrinho}
valorTotal={valorTotal}
/>
)}
<img className="iconeCarrinho" src={iconeCarrinho} onClick={this.mostrarCarrinho} alt={'produtos'} />

</ProdutosMain>
)
}
}

export default App;

export default App
Loading
Loading