Calculator logic started

This commit is contained in:
Andrzej Stepien 2023-07-04 13:15:57 +02:00
parent 91787ee98d
commit 113aa388a1
6 changed files with 97 additions and 2 deletions

View File

@ -0,0 +1,11 @@
button{
width:100px;
height:100px;
background-color: gray;
margin: 10px;
font-size: 30px;
}
#display{
font-size: 26px;;
}

View File

@ -1,9 +1,10 @@
import './App.css';
import Calculator from './Components/Calculator';
function App() {
return (
<div className="App">
<Calculator/>
</div>
);
}

View File

@ -1,3 +1,6 @@
export default function Button(props){
return(
<button>{props.children}</button>
)
}

View File

@ -0,0 +1,33 @@
import { useState } from "react";
import NumPad from "./NumPad";
import Operators from "./Operators";
export default function Calculator(props){
const [input,setInput] = useState(0)
const [memory,setMemory] = useState(0)
const [operation,setOperation] = useState("")
function handleInput(content){
if(typeof content === "number" ){
setInput(prev=>{return prev.toString()+content.toString()})
}else{ //EXTRA CONDITION FOR DECIMAL, REGEX TO MAKE IT MAKE SENSE
setMemory(input)
setInput(0)
setOperation(content)
}
}
return(
<>
<div id="display">
<p id="memory">{memory}</p>
<p id="input">{input}</p>
<p id="operation">{operation}</p>
</div>
<NumPad handleInput={handleInput}/>
<Operators handleInput={handleInput}/>
</>
)
}

28
src/Components/NumPad.js Normal file
View File

@ -0,0 +1,28 @@
import Button from "./Button"
export default function NumPad(props){
const map = {
zero:{number:0,callback:""},
one:{number:1,callback:""},
two:{number:2,callback:""},
three:{number:3,callback:""},
four:{number:4,callback:""},
five:{number:5,callback:""},
six:{number:6,callback:""},
seven:{number:7,callback:""},
eight:{number:8,callback:""},
nine:{number:9,callback:""}
}
const numPad = Object.keys(map).map((e,i)=>{
return(
<Button id={e} number={map[e].number} key={"numPad"+e} callback={map[e]}>
{i}
</Button>
)
})
return(
<>
{numPad}
</>
)
}

View File

@ -0,0 +1,19 @@
import Button from "./Button";
export default function Operators(props){
const map = {
add:{symbol:"+",callback:""},
subtract:{symbol:"-",callback:""},
multiply:{symbol:"x",callback:""},
divide:{symbol:"/",callback:""},
decimal:{symbol:".",callback:""}
}
const operators = Object.keys(map).map(e=>{
return <Button id={e} callback={map[e].callback} key={e}>
{map[e].symbol}
</Button>
})
return ( <>{operators}</>)
}