Skip to content

role="separator" is not a valid list child #829

Description

@angelikatyborska

Elements with role separator are not valid children of lists (ul, ol).

I found this issue while working on #414:

    Expected the HTML found at $('.u-list-none:nth-child(2)') to have no violations:
    <ul class="u-list-none">

    Received:
    <ul> and <ol> must only directly contain <li>, <script> or <template> elements (list)

    Fix all of the following:
      List element has direct children that are not allowed: [role=separator]

    You can find more information on this issue here:
    https://dequeuniversity.com/rules/axe/4.10/list?application=axeAPI

I saw that the documentation recommends adding <li role="separator"></li> as list children in dropdown menus. See screenshot:

Screenshot 2024-08-19 at 13-25-01 Atoms _ Dropdown _ Overview - Page ⋅ Storybook

I believe the semantically correct way of providing a visual separator between list elements would be to split content into two separate lists and style them accordingly, for example:

<div class="list-group">
  <ul>
    <li>..</li>
  </ul>
  <ul>
    <li>..</li>
  </ul>
</div>
.list-group *:is(ul, ol):not(:last-child)::after {
  // add some whitespace and a visual line
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions