Calculator logic started
This commit is contained in:
parent
91787ee98d
commit
113aa388a1
11
src/App.css
11
src/App.css
|
@ -0,0 +1,11 @@
|
||||||
|
button{
|
||||||
|
width:100px;
|
||||||
|
height:100px;
|
||||||
|
background-color: gray;
|
||||||
|
margin: 10px;
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#display{
|
||||||
|
font-size: 26px;;
|
||||||
|
}
|
|
@ -1,9 +1,10 @@
|
||||||
import './App.css';
|
import './App.css';
|
||||||
|
import Calculator from './Components/Calculator';
|
||||||
|
|
||||||
function App() {
|
function App() {
|
||||||
return (
|
return (
|
||||||
<div className="App">
|
<div className="App">
|
||||||
|
<Calculator/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
export default function Button(props){
|
export default function Button(props){
|
||||||
|
|
||||||
|
return(
|
||||||
|
<button>{props.children}</button>
|
||||||
|
)
|
||||||
}
|
}
|
|
@ -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}/>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
|
@ -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}
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
|
@ -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}</>)
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue