From 3fd715c1b542a7d678f4fab150f8c92fec23a948 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Fri, 22 Nov 2024 15:15:22 -0500 Subject: [PATCH 01/16] Update: change default role for custom elements closes #2303 This updates a custom element's default role to none to allow attribute reflection from the custom element parent to its internals. This change provides additional clarification about how a custom element can be provided a role by authors, and what caveats would change a custom element's default role of none, to another implicit minimum role. --- html-aam/index.html | 45 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/html-aam/index.html b/html-aam/index.html index cf427a131..7ff3403fa 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -259,7 +259,8 @@

HTML Element Role Mappings

specified which would require a more specific minimum role to be exposed.
  • - Where an element is indicated as having "No corresponding (WAI-ARIA) role", or is mapped to the `generic` role, user agents + Where an element is indicated as having "No corresponding (WAI-ARIA) role", or is mapped to the `generic` + or `none` roles, user agents MUST NOT expose the `aria-roledescription` property value in the accessibility tree unless the element has an explicit, conforming `role` attribute value which [[WAI-ARIA-1.2]] does not prohibit the use of `aria-roledescription`.
  • @@ -851,7 +852,19 @@

    autonomous custom element

    [[wai-aria-1.2]] - If the author assigned a conforming ARIA role using the `role` attribute, map to that role. Otherwise, the `generic` role. + +

    + If the author assigned a conforming ARIA role using the `role` attribute, + or by the custom element's internals, map to the specified role. +

    +

    + If the author assigned attributes that result in a minimum role, then map + to the minimum role (see comments. +

    +

    + Otherwise, the element maps to the `none` role. +

    + Computed Role @@ -886,7 +899,29 @@

    autonomous custom element

    Comments - + +

    + Along with the attributes defined in this specification that contribute to modifying an element's minimum role, + the following conditions will also alter a custom element's computed role, if an author has not otherwise specified an + explicit role for the element: +

    + +
    +

    The following is an exmaple of an author specifiying an ARIA relation on a custom element, with another element in the DOM.

    +
    +                    
    +                      <my-element aria-details=ex>...<my-element>
    +                      ...
    +                      <div id=ex> <!-- details for my-element --> </div>
    +                    
    +                  
    +
    + @@ -8786,7 +8821,7 @@

    `autofocus`

    Comments - Provides a minimum role of `group`. + Provides a minimum role of `group`. @@ -10475,7 +10510,7 @@

    `draggable`

    Comments - Provides a minimum role of `group`. + Provides a minimum role of `group`. From 2e4fe8f8ee98b20ad0e02d0ed04d8337bb66c2f7 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Fri, 22 Nov 2024 15:50:16 -0500 Subject: [PATCH 02/16] fix typo / missing in-page link id --- html-aam/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html-aam/index.html b/html-aam/index.html index 7ff3403fa..c4ba1e803 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -859,7 +859,7 @@

    autonomous custom element

    If the author assigned attributes that result in a minimum role, then map - to the minimum role (see comments. + to the minimum role (see comments).

    Otherwise, the element maps to the `none` role. @@ -898,7 +898,7 @@

    autonomous custom element

    - Comments + Comments

    Along with the attributes defined in this specification that contribute to modifying an element's minimum role, From 0d942421b08288a675a27b0b951bb3f97c71167b Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Fri, 22 Nov 2024 15:52:46 -0500 Subject: [PATCH 03/16] Update html-aam/index.html --- html-aam/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html-aam/index.html b/html-aam/index.html index c4ba1e803..4e401b1c2 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -901,7 +901,7 @@

    autonomous custom element

    Comments

    - Along with the attributes defined in this specification that contribute to modifying an element's minimum role, + Along with the attributes defined in this specification that participate in modifying an element's minimum role, the following conditions will also alter a custom element's computed role, if an author has not otherwise specified an explicit role for the element:

    From a40c5e02078e17cf0c5939c462f53bfa6c5b210d Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Fri, 22 Nov 2024 15:56:30 -0500 Subject: [PATCH 04/16] Update html-aam/index.html --- html-aam/index.html | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/html-aam/index.html b/html-aam/index.html index 4e401b1c2..22272dc4f 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -913,8 +913,7 @@

    autonomous custom element

    The following is an exmaple of an author specifiying an ARIA relation on a custom element, with another element in the DOM.

    -
    -                    
    +                  
    
                           <my-element aria-details=ex>...<my-element>
                           ...
                           <div id=ex> <!-- details for my-element --> </div>
    
    From 34ceeb0e1fdda9d8c9cf20f1e789c3a86a09ab63 Mon Sep 17 00:00:00 2001
    From: Scott O'Hara 
    Date: Fri, 22 Nov 2024 15:56:34 -0500
    Subject: [PATCH 05/16] Update html-aam/index.html
    
    ---
     html-aam/index.html | 3 +--
     1 file changed, 1 insertion(+), 2 deletions(-)
    
    diff --git a/html-aam/index.html b/html-aam/index.html
    index 22272dc4f..53ebe033f 100644
    --- a/html-aam/index.html
    +++ b/html-aam/index.html
    @@ -917,8 +917,7 @@ 

    autonomous custom element

    <my-element aria-details=ex>...<my-element> ... <div id=ex> <!-- details for my-element --> </div> -
    -
    +
    From 6f6ebf83f5ecb803b4c70ce4f87805354994c248 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Fri, 22 Nov 2024 16:12:50 -0500 Subject: [PATCH 06/16] update per feedback/discussion about referenced elements --- html-aam/index.html | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/html-aam/index.html b/html-aam/index.html index 53ebe033f..4fe8abd62 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -907,16 +907,26 @@

    autonomous custom element

    • if the custom element is focusable: expose as `group` role
    • -
    • if the custom element has an `aria-live` or `aria-owns` attribute: expose as `generic` role
    • +
    • if the custom element has an `aria-live` attribute: expose as `generic` role
    • if element internals are used to set a global ARIA property: expose as `generic` role
    • -
    • if an author specifies an ARIA relation via an element attribute: expose `generic` role
    • +
    • if an author specifies an ARIA attribute that creates a relation with another element (via IDRef): expose `generic` role
    -

    The following is an exmaple of an author specifiying an ARIA relation on a custom element, with another element in the DOM.

    +

    The following are exmaples of an author specifiying a relationships between custom elements and other elements in the DOM.

    
    -                      <my-element aria-details=ex>...<my-element>
    +                      <my-element aria-details=ex>...</my-element>
                           ...
                           <div id=ex> <!-- details for my-element --> </div>
    +                      ...
    +                      <ex-ample aria-owns=u>...</ex-ample>
    +                      ...
    +                      <div id=u> <!-- becomes the last a11y child of ex-ample --> </div>
    +
    +                      <id-lement> ... </id-lement>
    +                      <script>
    +                        ...
    +                        document.querySelector('id-lement').ariaDescribedby = anotherEl;
    +                      </script>
                       
    From ae672af9ccecd858894f3cd55259c52d6f83b4f9 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Fri, 22 Nov 2024 16:20:08 -0500 Subject: [PATCH 07/16] Update index.html --- html-aam/index.html | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/html-aam/index.html b/html-aam/index.html index 4fe8abd62..7a79956ce 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -909,24 +909,24 @@

    autonomous custom element

  • if the custom element is focusable: expose as `group` role
  • if the custom element has an `aria-live` attribute: expose as `generic` role
  • if element internals are used to set a global ARIA property: expose as `generic` role
  • -
  • if an author specifies an ARIA attribute that creates a relation with another element (via IDRef): expose `generic` role
  • +
  • if an author specifies an ARIA attribute that creates a relation with another element: expose `generic` role
  • The following are exmaples of an author specifiying a relationships between custom elements and other elements in the DOM.

    
    -                      <my-element aria-details=ex>...</my-element>
    -                      ...
    -                      <div id=ex> <!-- details for my-element --> </div>
    -                      ...
    -                      <ex-ample aria-owns=u>...</ex-ample>
    -                      ...
    -                      <div id=u> <!-- becomes the last a11y child of ex-ample --> </div>
    +   <my-element aria-details=ex>...</my-element>
    +     ...
    +    <div id=ex> <!-- details for my-element --> </div>
    +    ...
    +    <ex-ample aria-owns=u>...</ex-ample>
    +      ...
    +    <div id=u> <!-- becomes the last a11y child of ex-ample --> </div>
     
    -                      <id-lement> ... </id-lement>
    -                      <script>
    -                        ...
    -                        document.querySelector('id-lement').ariaDescribedby = anotherEl;
    -                      </script>
    +    <id-lement> ... </id-lement>
    +    <script>
    +      ...
    +      document.querySelector('id-lement').ariaDescribedby = anotherEl;
    +    </script>
                       
    From 2215edc48c506eaf10616372cd4bc24976e8e73c Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Fri, 22 Nov 2024 16:32:45 -0500 Subject: [PATCH 08/16] Update html-aam/index.html --- html-aam/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html-aam/index.html b/html-aam/index.html index 7a79956ce..c5e1e3a60 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -909,7 +909,7 @@

    autonomous custom element

  • if the custom element is focusable: expose as `group` role
  • if the custom element has an `aria-live` attribute: expose as `generic` role
  • if element internals are used to set a global ARIA property: expose as `generic` role
  • -
  • if an author specifies an ARIA attribute that creates a relation with another element: expose `generic` role
  • +
  • if an author specifies an ARIA attribute on the custom element that creates a relation with another element: expose `group` role
  • The following are exmaples of an author specifiying a relationships between custom elements and other elements in the DOM.

    From 7ef3647db476fc8151e37c4ce8b52619a8f74f99 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Fri, 22 Nov 2024 16:33:00 -0500 Subject: [PATCH 09/16] Update html-aam/index.html --- html-aam/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html-aam/index.html b/html-aam/index.html index c5e1e3a60..9dc5b53ba 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -925,7 +925,7 @@

    autonomous custom element

    <id-lement> ... </id-lement> <script> ... - document.querySelector('id-lement').ariaDescribedby = anotherEl; + document.querySelector('id-lement').ariaDescribedbyByElements = [ descElement ]; </script>
    From 1c00754a92048e15d4cce8e045ccce32f0bea869 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Fri, 22 Nov 2024 16:51:13 -0500 Subject: [PATCH 10/16] or else if otherwise sure? --- html-aam/index.html | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/html-aam/index.html b/html-aam/index.html index 9dc5b53ba..e066f0fe0 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -906,29 +906,11 @@

    autonomous custom element

    explicit role for the element:

      -
    • if the custom element is focusable: expose as `group` role
    • -
    • if the custom element has an `aria-live` attribute: expose as `generic` role
    • -
    • if element internals are used to set a global ARIA property: expose as `generic` role
    • -
    • if an author specifies an ARIA attribute on the custom element that creates a relation with another element: expose `group` role
    • +
    • if the custom element is focusable: expose the `group` role
    • +
    • else if an author specifies an ARIA attribute on the custom element that creates a relation with another element: expose the `group` role
    • +
    • else if the custom element has an `aria-live` attribute: expose the `generic` role
    • +
    • else if element internals are used to set a global ARIA property: expose the `generic` role
    -
    -

    The following are exmaples of an author specifiying a relationships between custom elements and other elements in the DOM.

    -
    
    -   <my-element aria-details=ex>...</my-element>
    -     ...
    -    <div id=ex> <!-- details for my-element --> </div>
    -    ...
    -    <ex-ample aria-owns=u>...</ex-ample>
    -      ...
    -    <div id=u> <!-- becomes the last a11y child of ex-ample --> </div>
    -
    -    <id-lement> ... </id-lement>
    -    <script>
    -      ...
    -      document.querySelector('id-lement').ariaDescribedbyByElements = [ descElement ];
    -    </script>
    -                  
    -
    From 2532049df216b425941c7e6373f544ab72267469 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Fri, 22 Nov 2024 17:09:58 -0500 Subject: [PATCH 11/16] combining things pull comments into role table cell combine custom elements and form associated custom elements into a single mapping table --- html-aam/index.html | 96 +++++++++------------------------------------ 1 file changed, 19 insertions(+), 77 deletions(-) diff --git a/html-aam/index.html b/html-aam/index.html index e066f0fe0..8a4a5c124 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -841,29 +841,33 @@

    `audio`

    -

    autonomous custom element

    - +

    + autonomous custom elements + and + form-associated custom elements +

    +
    @@ -898,20 +902,8 @@

    autonomous custom element

    - - + +
    HTML Specification autonomous custom element + and + form-associated custom element
    [[wai-aria-1.2]] -

    - If the author assigned a conforming ARIA role using the `role` attribute, - or by the custom element's internals, map to the specified role. -

    -

    - If the author assigned attributes that result in a minimum role, then map - to the minimum role (see comments). -

    -

    - Otherwise, the element maps to the `none` role. -

    +
      +
    • If the author assigned a conforming ARIA role using the `role` attribute, or by the custom element's internals, map to the specified role.
    • +
    • else if the author assigned HTML attributes that result in a minimum role, then map to the minimum role.
    • +
    • else if the custom element is focusable: expose the `group` role
    • +
    • else if an author specifies an ARIA attribute on the custom element that creates a relation with another element: expose the `group` role
    • +
    • else if the custom element has an `aria-live` attribute: expose the `generic` role
    • +
    • else if element internals are used to set a global ARIA property: expose the `generic` role.
    • +
    • Otherwise, the element maps to the `none` role.
    • +
    Comments -

    - Along with the attributes defined in this specification that participate in modifying an element's minimum role, - the following conditions will also alter a custom element's computed role, if an author has not otherwise specified an - explicit role for the element: -

    -
      -
    • if the custom element is focusable: expose the `group` role
    • -
    • else if an author specifies an ARIA attribute on the custom element that creates a relation with another element: expose the `group` role
    • -
    • else if the custom element has an `aria-live` attribute: expose the `generic` role
    • -
    • else if element internals are used to set a global ARIA property: expose the `generic` role
    • -
    -
    Comments
    @@ -2622,56 +2614,6 @@

    `form`

    -

    form-associated custom element

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    HTML Specification - form-associated custom element -
    [[wai-aria-1.2]]If the author assigned a conforming ARIA role using the `role` attribute, map to that role. Otherwise, the `generic` role.
    Computed Role
    Use WAI-ARIA mapping
    - MSAA + IAccessible2 - -
    Use WAI-ARIA mapping
    -
    UIA -
    Use WAI-ARIA mapping
    -
    [[ATK]] -
    Use WAI-ARIA mapping
    -
    AX -
    Use WAI-ARIA mapping
    -
    Comments

    `h1`, `h2`, `h3`, `h4`, `h5`, and `h6`

    From 9a1e54a3ca356d4e77ffd570d1c1b5093813d205 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Wed, 27 Nov 2024 11:12:00 -0500 Subject: [PATCH 12/16] add in no shadow root use cae update wording to be consistent between steps --- html-aam/index.html | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/html-aam/index.html b/html-aam/index.html index 8a4a5c124..9a9c51393 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -860,13 +860,14 @@

    From 620e070c185258251c626490175d37672d37e299 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Tue, 17 Dec 2024 15:59:47 -0500 Subject: [PATCH 13/16] Update html-aam/index.html Co-authored-by: James Craig --- html-aam/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html-aam/index.html b/html-aam/index.html index 9a9c51393..1b296d900 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -860,7 +860,7 @@

    [[wai-aria-1.2]]
      -
    • If the author assigned a conforming ARIA role using the `role` attribute, or by the custom element's internals, map to the specified role.
    • -
    • else if the author assigned HTML attributes that result in a minimum role, then map to the minimum role.
    • -
    • else if the custom element is focusable: expose the `group` role
    • -
    • else if an author specifies an ARIA attribute on the custom element that creates a relation with another element: expose the `group` role
    • -
    • else if the custom element has an `aria-live` attribute: expose the `generic` role
    • -
    • else if element internals are used to set a global ARIA property: expose the `generic` role.
    • -
    • Otherwise, the element maps to the `none` role.
    • +
    • If the author assigned a conforming ARIA role using the `role` attribute, or by the custom element's internals: map to the specified role.
    • +
    • else if the author assigned HTML attributes that result in a minimum role: map to the minimum role.
    • +
    • else if the custom element is focusable: map to the `group` role
    • +
    • else if an author specifies a global ARIA attribute on the custom element that creates a relation with another element: map to the `group` role
    • +
    • else if the custom element has no attached shadow root: map to the `generic` role
    • +
    • else if the custom element has an `aria-live` attribute: map to the `generic` role
    • +
    • else if element internals are used to set a global ARIA property: map to the `generic` role.
    • +
    • Otherwise, the custom element maps to the `none` role.
    [[wai-aria-1.2]]
      -
    • If the author assigned a conforming ARIA role using the `role` attribute, or by the custom element's internals: map to the specified role.
    • +
    • If the author assigned a conforming role using the `role` attribute, or by the custom element's internals: map to the specified role.
    • else if the author assigned HTML attributes that result in a minimum role: map to the minimum role.
    • else if the custom element is focusable: map to the `group` role
    • else if an author specifies a global ARIA attribute on the custom element that creates a relation with another element: map to the `group` role
    • From e2c538d02349602ed023f1bf83131311163d1fab Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Tue, 17 Dec 2024 16:02:26 -0500 Subject: [PATCH 14/16] Update html-aam/index.html Co-authored-by: James Craig --- html-aam/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html-aam/index.html b/html-aam/index.html index 1b296d900..d47b66cf4 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -863,7 +863,7 @@

    • If the author assigned a conforming role using the `role` attribute, or by the custom element's internals: map to the specified role.
    • else if the author assigned HTML attributes that result in a minimum role: map to the minimum role.
    • else if the custom element is focusable: map to the `group` role
    • -
    • else if an author specifies a global ARIA attribute on the custom element that creates a relation with another element: map to the `group` role
    • +
    • else if an author specifies a global ARIA attribute on the custom element that creates a relation with another element: map to the `group` role
    • else if the custom element has no attached shadow root: map to the `generic` role
    • else if the custom element has an `aria-live` attribute: map to the `generic` role
    • else if element internals are used to set a global ARIA property: map to the `generic` role.
    • From 499fe99d4d7f79fa67f32cba5043a990ab937192 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Thu, 6 Feb 2025 12:28:47 -0500 Subject: [PATCH 15/16] Update html-aam/index.html Co-authored-by: James Craig --- html-aam/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html-aam/index.html b/html-aam/index.html index d47b66cf4..02d66ae5f 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -259,7 +259,7 @@

      HTML Element Role Mappings

      specified which would require a more specific minimum role to be exposed.
    • - Where an element is indicated as having "No corresponding (WAI-ARIA) role", or is mapped to the `generic` + Where an element is mapped to the `generic` or `none` roles, user agents MUST NOT expose the `aria-roledescription` property value in the accessibility tree unless the element has an explicit, conforming `role` attribute value which [[WAI-ARIA-1.2]] does not prohibit the use of `aria-roledescription`. From a4d84a8eb0ff1c227ef063b937bd50efa0a25fc6 Mon Sep 17 00:00:00 2001 From: Scott O'Hara Date: Thu, 6 Feb 2025 12:29:19 -0500 Subject: [PATCH 16/16] Update html-aam/index.html --- html-aam/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html-aam/index.html b/html-aam/index.html index 02d66ae5f..310a448e4 100644 --- a/html-aam/index.html +++ b/html-aam/index.html @@ -862,7 +862,7 @@

      • If the author assigned a conforming role using the `role` attribute, or by the custom element's internals: map to the specified role.
      • else if the author assigned HTML attributes that result in a minimum role: map to the minimum role.
      • -
      • else if the custom element is focusable: map to the `group` role
      • +
      • else if the custom element is focusable: map to the `group` role
      • else if an author specifies a global ARIA attribute on the custom element that creates a relation with another element: map to the `group` role
      • else if the custom element has no attached shadow root: map to the `generic` role
      • else if the custom element has an `aria-live` attribute: map to the `generic` role