Skip to content

Commit

Permalink
Improve UX
Browse files Browse the repository at this point in the history
  • Loading branch information
aminlotfi committed Apr 12, 2023
1 parent 928dbe2 commit fa3120e
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
4 changes: 2 additions & 2 deletions src/Components/NumberButton.jsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import {ACTIONS} from "../Templates/Calculator/Calculator";

const NumberButton = ({number, dispatch}) => {
const NumberButton = ({number, dispatch, customClasses}) => {
return (
<button
onClick={() => dispatch({type: ACTIONS.SELECT_NUMBER, payload: {number}})}
className="flex item-center justify-center bg-gray-200 hover:bg-gray-300 p-4 rounded-[10px] text-xl">
className={`flex item-center justify-center bg-gray-200 hover:bg-gray-300 p-4 rounded-[10px] text-xl ${customClasses}`}>
{number}
</button>
)
Expand Down
17 changes: 14 additions & 3 deletions src/Templates/Calculator/Calculator.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,22 @@ const calculate = ({currentOperand, prevOperand, operation}) => {
return result.toString()
}

const maskNumber = (number) => {
if (number == null) return
const [integer, decimal] = number.split('.')
if (decimal == null) {
return FORMATTER.format(integer)
}
return `${FORMATTER.format(integer)}.${decimal}`
}

const FORMATTER = new Intl.NumberFormat("en-us", {maximumFractionDigits: 0,})

const Calculator = () => {
const [{currentOperand, prevOperand, operation}, dispatch] = useReducer(reducer, {});

return <div className="flex flex-col items-center justify-start p-4 bg-white rounded-xl w-full max-w-[500px] select-none">
<CalculatorMonitor currentOperand={currentOperand} prevOperand={prevOperand} operation={operation}/>
<CalculatorMonitor currentOperand={maskNumber(currentOperand)} prevOperand={maskNumber(prevOperand)} operation={operation}/>
<div className="grid grid-cols-4 gap-4 w-full">
<button
onClick={() => dispatch({type: ACTIONS.CLEAR})}
Expand All @@ -126,11 +137,11 @@ const Calculator = () => {
<NumberButton number={2} dispatch={dispatch}/>
<NumberButton number={3} dispatch={dispatch}/>
<OperationButton operation={'+'} dispatch={dispatch}/>
<NumberButton number={0} dispatch={dispatch}/>
<NumberButton customClasses={'col-span-2'} number={0} dispatch={dispatch}/>
<NumberButton number={'.'} dispatch={dispatch}/>
<button
onClick={() => dispatch({type: ACTIONS.CALCULATE})}
className="col-span-2 flex item-center justify-center bg-green-500 hover:bg-green-600 p-4 rounded-[10px] text-xl">
className="flex item-center justify-center bg-green-500 hover:bg-green-600 p-4 rounded-[10px] text-xl">
=
</button>
</div>
Expand Down

0 comments on commit fa3120e

Please sign in to comment.