Submitted
Vintage Calculator of your dreams! (with react, typescript, sass)
@turtlecrab
Design comparison
Solution retrospective
Kinda proud of this one. In the previous challenge I encountered strange(for me) behaviour of type=number
inputs with react+ts, and this time I decided to do all validations manually. It ended up pretty wild, I basically hardcoded every button's behaviour in every situation following my idea of how a real calculator should behave. I like how it came together, this is not the code to be proud of, but it does the job well! I could find only one sequence of actions that lead to NaN
on the calculator screen, and it's not a straightforward one(can you find it?)
The stuff I wanted, but failed to implement:
- Make screen overflow to the left and stay aligned to the right when there are lengthy numbers. It's working now with
justify-content: flex-end
but for some reason it's not scrollable with flex. Without flex,overflow: auto
does it's job, but it overflows to the right despite that the content is aligned to the right. I tried approaches withdirection: rtl
- no luck, I triedscrollIntoView
- it kinda does the job, but it also scrolls vertically and that's bad UX in my opinion. I went with flex in the end. - Issue related to the previous one - what to do with number with a lot of digits? Given that I chose flex with no scroll I decided to round decimals to 12 digits so a number like 0.333(3) is visible on the screen. It doesn't work for big numbers but it's something. I also made the screen expandable into two lines when there are long numbers, not sure about this decision.
- How to handle all ⌨keyboard 👇events of the whole page? Now keyhandler is on the main div, but if we click away it loses focus. We can't put a keyhandler on the body, can we?
That was a great challenge which I really enjoyed, I appreciate any feedback!
Community feedback
Please log in to post a comment
Log in with GitHubJoin our Discord community
Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!
Join our Discord