Skip to content

Commit

Permalink
JS Files added
Browse files Browse the repository at this point in the history
  • Loading branch information
ArshWalker committed Jul 9, 2021
0 parents commit b220953
Show file tree
Hide file tree
Showing 23 changed files with 629 additions and 0 deletions.
44 changes: 44 additions & 0 deletions src/App.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import React, { useState } from "react";
import Expenses from "./components/Expenses/Expenses";
import NewExpense from "./components/NewExpense/NewExpense";

const DUMMY_EXPENSES = [
{
id: "e1",
title: "Toilet Paper",
amount: 94.12,
date: new Date(2020, 7, 14),
},
{ id: "e2", title: "New TV", amount: 799.49, date: new Date(2021, 2, 12) },
{
id: "e3",
title: "Car Insurance",
amount: 294.67,
date: new Date(2021, 2, 28),
},
{
id: "e4",
title: "New Desk (Wooden)",
amount: 450,
date: new Date(2021, 5, 12),
},
];

function App() {
const [expenses, setExpenses] = useState(DUMMY_EXPENSES);

const addExpenseHandler = (expense) => {
// setExpenses([expense, ...expense]);
setExpenses((prevExpenses) => {
return [expense, ...prevExpenses];
});
};
return (
<div>
<NewExpense onAddExpense={addExpenseHandler}></NewExpense>
<Expenses items={expenses}></Expenses>
</div>
);
}

export default App;
9 changes: 9 additions & 0 deletions src/components/Chart/Chart.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.chart {
padding: 1rem;
border-radius: 12px;
background-color: #f8dfff;
text-align: center;
display: flex;
justify-content: space-around;
height: 10rem;
}
20 changes: 20 additions & 0 deletions src/components/Chart/Chart.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import React from "react";
import "./Chart.css";
import ChartBar from "./ChartBar";

const Chart = (props) => {
return (
<div className="chart">
{props.dataPoints.map((dataPoint) => (
<ChartBar
key={dataPoint.label}
value={dataPoint.value}
maxValue={null}
label={dataPoint.label}
/>
))}
</div>
);
};

export default Chart;
30 changes: 30 additions & 0 deletions src/components/Chart/ChartBar.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
.chart-bar {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
}

.chart-bar__inner {
height: 100%;
width: 100%;
border: 1px solid #313131;
border-radius: 12px;
background-color: #c3b4f3;
overflow: hidden;
display: flex;
flex-direction: column;
justify-content: flex-end;
}

.chart-bar__fill {
background-color: #4826b9;
width: 100%;
transition: all 0.3s ease-out;
}

.chart-bar__label {
font-weight: bold;
font-size: 0.5rem;
text-align: center;
}
5 changes: 5 additions & 0 deletions src/components/Chart/ChartBar.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// import React from 'react';
import "./ChartBar.css";
const ChartBar = () => {};

export default ChartBar;
26 changes: 26 additions & 0 deletions src/components/Expenses/ExpenseDate.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
.expense-date {
display: flex;
flex-direction: column;
width: 5.5rem;
height: 5.5rem;
border: 1px solid #ececec;
background-color: #2a2a2a;
color: white;
border-radius: 12px;
align-items: center;
justify-content: center;
}

.expense-date__month {
font-size: 0.75rem;
font-weight: bold;
}

.expense-date__year {
font-size: 0.75rem;
}

.expense-date__day {
font-size: 1.5rem;
font-weight: bold;
}
17 changes: 17 additions & 0 deletions src/components/Expenses/ExpenseDate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import "./ExpenseDate.css";

function ExpenseDate(props) {
const month = props.date.toLocaleString("en-US", { month: "long" });
const day = props.date.toLocaleString("en-US", { day: "2-digit" });
const year = props.date.getFullYear();

return (
<div className="expense-date">
<div className="expense-date__month">{month}</div>
<div className="expense-date__year">{year}</div>
<div className="expense-date__day">{day}</div>
</div>
);
}

export default ExpenseDate;
24 changes: 24 additions & 0 deletions src/components/Expenses/ExpenseFilter.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
.expenses-filter {
color: white;
padding: 0 1rem;
}

.expenses-filter__control {
display: flex;
width: 100%;
align-items: center;
justify-content: space-between;
margin: 1rem 0;
}

.expenses-filter label {
font-weight: bold;
margin-bottom: 0.5rem;
}

.expenses-filter select {
font: inherit;
padding: 0.5rem 3rem;
font-weight: bold;
border-radius: 6px;
}
25 changes: 25 additions & 0 deletions src/components/Expenses/ExpenseFilter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import React from "react";

import "./ExpenseFilter.css";

const ExpensesFilter = (props) => {
const dropdownChangeHandler = (event) => {
props.onChangeFilter(event.target.value);
};

return (
<div className="expenses-filter">
<div className="expenses-filter__control">
<label>Filter by year</label>
<select value={props.selected} onChange={dropdownChangeHandler}>
<option value="2022">2022</option>
<option value="2021">2021</option>
<option value="2020">2020</option>
<option value="2019">2019</option>
</select>
</div>
</div>
);
};

export default ExpensesFilter;
56 changes: 56 additions & 0 deletions src/components/Expenses/ExpenseItem.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
.expense-item {
display: flex;
justify-content: space-between;
align-items: center;

padding: 0.5rem;
margin: 1rem 0;

background-color: #4b4b4b;
}

.expense-item__description {
display: flex;
flex-direction: column;
gap: 1rem;
align-items: flex-end;
flex-flow: column-reverse;
justify-content: flex-start;
flex: 1;
}

.expense-item h2 {
color: #3a3a3a;
font-size: 1rem;
flex: 1;
margin: 0 1rem;
color: white;
}

.expense-item__price {
font-size: 1rem;
font-weight: bold;
color: white;
background-color: #40005d;
border: 1px solid white;
padding: 0.5rem;
border-radius: 12px;
}

@media (min-width: 580px) {
.expense-item__description {
flex-direction: row;
align-items: center;
justify-content: flex-start;
flex: 1;
}

.expense-item__description h2 {
font-size: 1.25rem;
}

.expense-item__price {
font-size: 1.25rem;
padding: 0.5rem 1.5rem;
}
}
29 changes: 29 additions & 0 deletions src/components/Expenses/ExpenseItem.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import React from "react";

import "./ExpenseItem.css";
import ExpenseDate from "./ExpenseDate";
import Card from "../UI/Card";

function ExpenseItem(props) {
// const [title, setTitle] = useState(props.title);

// const clickHandler = () => {
// setTitle("updated");
// console.log(title);
// };

return (
<li>
<Card className="expense-item">
<ExpenseDate date={props.date} />
<div className="expense-item__description">
<h2>{props.title}</h2>
<div className="expense-item__price">{props.amount}</div>
</div>
{/* <button onClick={clickHandler}>Change Title</button> */}
</Card>
</li>
);
}

export default ExpenseItem;
7 changes: 7 additions & 0 deletions src/components/Expenses/Expenses.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.expenses {
padding: 1rem;
background-color: rgb(31, 31, 31);
margin: 2rem auto;
width: 50rem;
max-width: 95%;
}
63 changes: 63 additions & 0 deletions src/components/Expenses/Expenses.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import React, { useState } from "react";
import ExpenseFilter from "./ExpenseFilter";
import "./Expenses.css";
import Card from "../UI/Card";
import ExpensesList from "./ExpensesList";

function Expenses(props) {
const [filteredYear, setFilteredYear] = useState("2020");

const filterChangeSelector = (selectedYear) => {
setFilteredYear(selectedYear);
};

const filteredExpenses = props.items.filter((expense) => {
return expense.date.getFullYear().toString() === filteredYear;
});

return (
<Card className="expenses">
<ExpenseFilter
selected={filteredYear}
onChangeFilter={filterChangeSelector}
/>
{/* {filteredExpenses.length === 0 ? (
<p>No Expenses Found!</p>
) : (
filteredExpenses.map((expense) => (
<ExpenseItem
key={expense.id}
title={expense.title}
amount={expense.amount}
date={expense.date}
/>
))
)} */}

{/* {expensesContent} */}
<ExpensesList items={filteredExpenses} />
{/* <ExpenseItem
title={props.items[0].title}
amount={props.items[0].amount}
date={props.items[0].date}
/>
<ExpenseItem
title={props.items[1].title}
amount={props.items[1].amount}
date={props.items[1].date}
/>
<ExpenseItem
title={props.items[2].title}
amount={props.items[2].amount}
date={props.items[2].date}
/>
<ExpenseItem
title={props.items[3].title}
amount={props.items[3].amount}
date={props.items[3].date}
/> */}
</Card>
);
}

export default Expenses;
9 changes: 9 additions & 0 deletions src/components/Expenses/ExpensesList.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.expenses-list {
list-style: none;
padding: 0;
}

.expenses-list__fallback {
color: white;
text-align: center;
}
Loading

0 comments on commit b220953

Please sign in to comment.