Invoice App, React, Redux and styled Components
Design comparison
Solution retrospective
Hello everyone, I would like to share my invoice project, I decided to innovate and add a graph screen on my own, one based on the amount of invoices per status and the other based on the monetary value per status, and so far this has been my project with a higher level of difficulty than Frontend Mentor, in it I used Redux and I could see in practice the benefits of saving the data in a global state, I also decided not to use external libraries in the creation of components, nor in the creation of graphics, my biggest The challenge was creating the pie chart, where I used the conic-gradient property to separate the colors. I used the percentage of each status and transformed it into degs from 0 to 360. Then, I created a function to identify which part of the graph the user has the mouse over, based on the degs, to show a corresponding tooltip.
feedback is welcome!
Community feedback
- @0xabdulkhaliqPosted over 1 year ago
Hello there 👋. Congratulations on successfully completing the challenge! 🎉
- I have some recommendations regarding your code that I believe will be of great interest to you.
HTML 🏷️:
- This solution generates accessibility error reports due to
non-semantic
markup, which confueses landmark for a webpage
- So fix it by replacing the
div id="root"
with semantic element<main>
in yourindex.html
file to improve accessibility and organization of your page.
- What is meant by landmark ?, They used to define major sections of your page instead of relying on generic elements like
<div>
or<span>
- They convey the structure of your page. For example, the
<main>
element should include all content directly related to the page's main idea, so there should only be one per page
BUTTONS 🔴:
- This solution has also generated accessibility error reports due to lack discernible text for
<button>
element
- The
<button>
must have discernible text that clearly describes the destination, purpose, function, or action for screen reader users.
- Screen reader users are not able to discern the purpose of elements with role="link", role="button", or role="menuitem" that do not have an accessible name.
- The
<button>
name rule has five markup patterns that pass test criteria:
<button id="al" aria-label="Name"></button> <button id="alb" aria-labelledby="labeldiv"></button> <div id="labeldiv">Button label</div> <button id="combo" aria-label="Aria Name">Name</button> <button id="buttonTitle" title="Title"></button>
-
Ensure that each
<button>
element and elements withrole="button"
have one of the following characteristics:- Inner text that is discernible to screen reader users.
- Non-empty
aria-label
attribute. aria-labelledby
pointing to element with text which is discernible to screen reader users.role="presentation"
orrole="none"
(ARIA 1.1) and is not in tab order (tabindex="-1"
).
LINKS 📍:
- The WCAG says that you should not describe the image text in this situation but the link function.
- When an
image
is the only content of a link, the text alternative for the image describes the unique function of the link.
- or adding the description after (note that using
aria-describedby
the description might be hidden)
<a href="about.html" aria-describedby="about page">About</a>
- Summary, add a
aria-describedby
to<a>
element to describe its purpose to screen readers and other accessibility devices
- EG:
aria-describedby="Khalid's facebook profile"
I hope you find this helpful 😄 Above all, the solution you submitted is great !
Happy coding!
Marked as helpful0
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