mirror of
https://github.com/gabehf/BudgetBuddy.git
synced 2026-03-08 23:18:15 -07:00
Making Widgets Look Nice 1.0
This commit is contained in:
parent
c249a077cc
commit
131e34ca84
19 changed files with 349 additions and 177 deletions
41
src/components/AddExpenseForm.css
Normal file
41
src/components/AddExpenseForm.css
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
/* Dropdown Button */
|
||||
.dropbtn {
|
||||
background-color: #04AA6D;
|
||||
color: white;
|
||||
padding: 16px;
|
||||
font-size: 16px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* The container <div> - needed to position the dropdown content */
|
||||
.dropdown {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* Dropdown Content (Hidden by Default) */
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: #f1f1f1;
|
||||
min-width: 160px;
|
||||
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* Links inside the dropdown */
|
||||
.dropdown-content a {
|
||||
color: black;
|
||||
padding: 12px 16px;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Change color of dropdown links on hover */
|
||||
.dropdown-content a:hover {background-color: #ddd;}
|
||||
|
||||
/* Show the dropdown menu on hover */
|
||||
.dropdown:hover .dropdown-content {display: block;}
|
||||
|
||||
/* Change the background color of the dropdown button when the dropdown content is shown */
|
||||
.dropdown:hover .dropbtn {background-color: #3e8e41;}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
import React, { useContext, useState } from 'react';
|
||||
import { AppContext } from '../context/AppContext';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
import './AddExpenseForm.css'
|
||||
|
||||
const AddExpenseForm = (props) => {
|
||||
const { dispatch } = useContext(AppContext);
|
||||
|
|
@ -27,7 +28,21 @@ const AddExpenseForm = (props) => {
|
|||
|
||||
return (
|
||||
<form onSubmit={onSubmit}>
|
||||
<div class='row'>
|
||||
<div class='row alert alert-secondary'>
|
||||
{/* <div class='col-sm col-lg-4'>
|
||||
<form for="name">
|
||||
<label >Choose a category:</label>
|
||||
<select>
|
||||
<option required='required'
|
||||
type='text'
|
||||
class='form-control'
|
||||
id='name'
|
||||
value={name}
|
||||
onChange={(event) => setName(event.target.value)}>Rent</option>
|
||||
</select>
|
||||
</form>
|
||||
</div> */}
|
||||
<h3>Add Expense</h3>
|
||||
<div class='col-sm col-lg-4'>
|
||||
<label for='name'>Name</label>
|
||||
<input
|
||||
|
|
@ -37,8 +52,9 @@ const AddExpenseForm = (props) => {
|
|||
id='name'
|
||||
value={name}
|
||||
onChange={(event) => setName(event.target.value)}
|
||||
/>
|
||||
</div>
|
||||
></input>
|
||||
|
||||
</div>
|
||||
<div class='col-sm col-lg-4'>
|
||||
<label for='cost'>Cost</label>
|
||||
<input
|
||||
|
|
@ -50,14 +66,14 @@ const AddExpenseForm = (props) => {
|
|||
onChange={(event) => setCost(event.target.value)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class='row mt-3'>
|
||||
<div class='col-sm'>
|
||||
<button type='submit' class='btn btn-primary'>
|
||||
Save
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div></div>
|
||||
|
||||
</form>
|
||||
);
|
||||
};
|
||||
|
|
|
|||
54
src/components/AddIncome.js
Normal file
54
src/components/AddIncome.js
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import React, { useContext, useState } from 'react';
|
||||
import { AppContext } from '../context/AppContext';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
|
||||
const AddExpenseForm = (props) => {
|
||||
const { dispatch } = useContext(AppContext);
|
||||
|
||||
const [name, setName] = useState('');
|
||||
const [cost, setCost] = useState('');
|
||||
|
||||
const onSubmit = (event) => {
|
||||
event.preventDefault();
|
||||
const expense = {
|
||||
id: uuidv4(),
|
||||
name,
|
||||
cost: parseInt(cost),
|
||||
};
|
||||
|
||||
dispatch({
|
||||
type: 'ADD_EXPENSE',
|
||||
payload: expense,
|
||||
});
|
||||
|
||||
setName('');
|
||||
setCost('');
|
||||
};
|
||||
|
||||
return (
|
||||
<form onSubmit={onSubmit}>
|
||||
<div class='row'>
|
||||
<div class='col-lg-3'>
|
||||
<label for='cost'>Income</label>
|
||||
<input
|
||||
required='required'
|
||||
type='number'
|
||||
class='form-control'
|
||||
id='cost'
|
||||
value={cost}
|
||||
onChange={(event) => setCost(event.target.value)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class='row mt-3'>
|
||||
<div class='col-sm'>
|
||||
<button type='submit' class='btn btn-primary'>
|
||||
Save
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
);
|
||||
};
|
||||
|
||||
export default AddExpenseForm;
|
||||
|
|
@ -20,12 +20,12 @@ const ExpenseList = () => {
|
|||
|
||||
return (
|
||||
<>
|
||||
<input
|
||||
{/* <input
|
||||
type='text'
|
||||
class='form-control mb-2 mr-sm-2'
|
||||
placeholder='Type to search...'
|
||||
onChange={handleChange}
|
||||
/>
|
||||
/> */}
|
||||
<ul class='list-group mt-3 mb-3'>
|
||||
{filteredExpenses.map((expense) => (
|
||||
<ExpenseItem
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
import React, { useContext } from 'react';
|
||||
import { AppContext } from '../context/AppContext';
|
||||
import logo from './widget_logos/expenses_logo.png';
|
||||
import './css/ExpenseTotal.css'
|
||||
|
||||
const ExpenseTotal = () => {
|
||||
const { expenses } = useContext(AppContext);
|
||||
|
|
@ -10,6 +12,7 @@ const ExpenseTotal = () => {
|
|||
|
||||
return (
|
||||
<div class='alert alert-secondary p-4'>
|
||||
<img src={logo}></img>
|
||||
<span>This Month's Expenses: ${total}</span>
|
||||
</div>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
import React, { useContext } from 'react';
|
||||
import { AppContext } from '../context/AppContext';
|
||||
import logo from './widget_logos/budget_logo.png';
|
||||
import './css/Remaining.css'
|
||||
|
||||
const RemainingBudget = () => {
|
||||
const { expenses, budget } = useContext(AppContext);
|
||||
|
|
@ -12,6 +14,7 @@ const RemainingBudget = () => {
|
|||
|
||||
return (
|
||||
<div class={`alert p-4 ${alertType}`}>
|
||||
<img src={logo}></img>
|
||||
<span>Budget Remaining: ${budget - totalExpenses}</span>
|
||||
</div>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
import React from 'react';
|
||||
import './css/ViewBudget.css'
|
||||
import logo from './widget_logos/current_balance_logo.png';
|
||||
|
||||
const ViewBudget = (props) => {
|
||||
return (
|
||||
<>
|
||||
<img src={logo}></img>
|
||||
<span>Current Balance: ${props.budget}</span>
|
||||
<button type='button' class='btn btn-primary' onClick={props.handleEditClick}>
|
||||
Edit
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ const Budget = () => {
|
|||
};
|
||||
|
||||
return (
|
||||
<div class='alert alert-secondary p-3 d-flex align-items-center justify-content-between'>
|
||||
<div class='alert alert-secondary d-flex align-items-center justify-content-between'>
|
||||
{isEditing ? (
|
||||
<EditBudget handleSaveClick={handleSaveClick} budget={budget} />
|
||||
) : (
|
||||
|
|
|
|||
0
src/components/css/ExpenseTotal.css
Normal file
0
src/components/css/ExpenseTotal.css
Normal file
3
src/components/css/Remaining.css
Normal file
3
src/components/css/Remaining.css
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
img {
|
||||
width: 50px;
|
||||
}
|
||||
4
src/components/css/ViewBudget.css
Normal file
4
src/components/css/ViewBudget.css
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
span {
|
||||
float: right;
|
||||
margin-right: 50px;
|
||||
}
|
||||
BIN
src/components/widget_logos/budget_logo.png
Normal file
BIN
src/components/widget_logos/budget_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.8 KiB |
BIN
src/components/widget_logos/current_balance_logo.png
Normal file
BIN
src/components/widget_logos/current_balance_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 934 B |
BIN
src/components/widget_logos/expenses_logo.png
Normal file
BIN
src/components/widget_logos/expenses_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 334 KiB |
BIN
src/components/widget_logos/income_logo.png
Normal file
BIN
src/components/widget_logos/income_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
Loading…
Add table
Add a link
Reference in a new issue