• Hi Max Mega Menu team!

    First of all, I want to say thank you for the work you have done so far towards improving accessibility in your plugin. It’s the best option I have found for creating accessible mega menus.

    I would like to use it on our website and I am hoping that you can please release an update with these accessibility fixes to make that possible. If you want to see the issues on a staging site, I’m happy to share the htaccess info for viewing the front end of our staging site. DM me on Make WordPress Slack for that information.

    Here are fixes that are needed:

    1. Add aria-controls attributes to links with a role of button referencing the ID of the submenu that they control. See MDN aria-controls documentation. These links:
      <a class="mega-menu-link" tabindex="0" aria-expanded="false" role="button">Products<span class="mega-indicator" aria-hidden="true"></a>
      It will require adding an ID to <ul class="mega-sub-menu" role="presentation">
    2. Add aria-haspopup="true" to those same links. See MDN aria-haspopup documentation.
    3. When expanding a submenu on desktop, the arrow stays pointing down instead of up (screenshot). This is not the case on mobile, where the arrow toggles between up and down correctly.
    4. Add a tab focus lock on submenus when clicked open, or ensure that if a user tabs out of a submenu, the menu automatically closes. Currently when a submenu is opened, a keyboard user is able to tab out and beyond it, and it stays open. Additionally, the parent item has focus styles when expanded, which may cause confusion. See a screenshot showing the menu still open after focus has moved beyond it. Users should either not be able to tab beyond the submenu without closing it, or if they do, the menu should close on its own.
    5. The mobile menu button also needs aria-controls and aria-haspopup="true". This button:
      <button aria-label="Menu" class="mega-toggle-animated mega-toggle-animated-slider" type="button" aria-expanded="false">
    6. When the mobile menu is opened, focus is not moved into the menu. This stops users from being able to use “read” functions in their screen reader. Focus should either be moved to the first item in the menu or the container itself.
    7. When the “Off Canvas” mobile menus are used, there should be a container around the menu list and the button so they are in the same container. Currently, screen readers can leave this menu without closing it and will read items that are hidden behind it on the page. This can cause confusion. The container should be a <dialog> or have a dialog role and also have aria-modal="true". See MDN aria-modal documentation and dialog documentation.
    8. Users should not be able to tab out of Off Canvas mobile menus. The expectation is that there will be a tab focus lock when the menu is open, and users will be able to tab through the items in the mobile menu in a circular fashion.
    9. Closing the mobile menu with the close button does not return keyboard focus to the button for opening the menu. Focus stays on the (now hidden) close button and the screen reader does not announce anything to confirm the menu has closed. See screenshot of the menu closed but focus still on the hidden button.
    10. When keyboard focus is on the close button for the mobile menu, the escape key cannot be used to close the menu.
    11. The list structure is incorrect/confusing if a heading is added within a column. In this example screenshot, the screen reader says “list 6 items” when the user tabs into the first item in the list. This specific menu is set up with a custom HTML block that contains a heading and 5 menu items (editor screenshot). Because Max Mega Menu adds a list item for every component added into a column, this can cause confusion or make users think a list item is missing because when tabbing through interactive elements, they always hear one fewer items than the screen reader says there will be.

      I understand that this can be difficult to work around in very complex Mega Menus with lots of non-interactive components, and I understand why this is the way it is. However, for simpler menus like this one, this could be resolved by adding an additional setting to the column settings panel (screenshot). If you were to add a heading field here, then, if filled in, you can add the heading before the column <ul> and you can add aria-labelledby like this:
      <h2 class="mega-submenu-column-header" id="sub-header1">Software Products</h2> <ul class="mega-sub-menu" aria-labelledby="sub-header1"> [...] </ul>
      That would get the heading out of the list so screen readers announce the correct number and provide additional context to the list for people who are tabbing through interactive components. You could potentially extend this further by adding expand/collapse buttons to these headers on mobile, though that is not necessary.

    I hope you find this feedback helpful and appreciate you all prioritizing accessibility. I would love to be able to use this plugin and recommend it to others if these blockers can be resolved.

    Thanks!

    The page I need help with: [log in to see the link]

Viewing 6 replies - 1 through 6 (of 6 total)
  • Plugin Support megatom

    (@megatom)

    Hi Amber,

    Many thanks for the helpful review. I’m glad to see the work we have done on accessibility (the result of many previous audits over the past 8 or so years) has been recognised.

    I will review your suggestions and look forward to further enhancing the accessibility of MMM in our upcoming updates.

    Regards,
    Tom

    Thread Starter Amber Hinds

    (@alh0319)

    Thank you, Tom! I look forward to the updates.

    Thread Starter Amber Hinds

    (@alh0319)

    Hi @megatom,

    I am curious if you have discussed this as a team and have any sort of timeline for releasing fixes?

    Thank you!!

    Plugin Support megatom

    (@megatom)

    Hi Amber,

    The team is just me, I’ll review and include fixes in the next update. I don’t have a timeline for that, but historically you will see I generally release larger updates every 2-4 months.

    Regards,
    Tom

    Plugin Support megatom

    (@megatom)

    Hi Amber,

    To begin with point 11 which looks like a big one, this is something you can fix yourself by adjusting/correcting the menu structure.

    The menu structure itself (on the Appearance > Menus page) should look like this:

    Products
    -- Software Products
    ---- Accessibility Checker
    ---- Audit History Addon
    ---- etc

    When you open the Mega Menu Builder for Products, you’ll find Software Products in there and you can drag it to the correct position within the sub menu. The resultant HTML will be simplified and semantically correct (so as not to confuse screen readers).

    To make Software Products behave like a header rather than a link, enable the Disable Link option for that item. To style Software Products to look like a header rather than a link, utilise the Mega Menu > Menu Themes > Mega Menus > Second/Third Level Items options.

    You can check the demo menu on megamenu.com (the Menu Items sub menu) to see how it looks, if you try it with a screen reader you will find it announces the correct number of items.

    I’ll work on the other issues also, but that is something you can get on with in the mean time.

    Regards,
    Tom

    Plugin Support megatom

    (@megatom)

    Hi Amber,

    How did you get on with making those changes?

    Thank you again for your suggestions, most of the updates are now in the development version. You can check it on megamenu.com. I still need to make some refinements but you can test it yourself by installing the trunk version from the bottom of this page: https://wordpress.org/plugins/megamenu/advanced/

    Regarding aria-haspopup, please check: https://www.megamenu.com/documentation/aria-haspopup/ . The tldr is, if w3.org start using aria-haspopup on their mega menu, we will too.

    The other one is point 7, I’ll work on that.

    Regards,
    Tom

Viewing 6 replies - 1 through 6 (of 6 total)

You must be logged in to reply to this topic.