Re: make aria-owns to rearrange children

James, beginning with what version of IE is querySelector supported?


Rich Schwerdtfeger



From:	James Nurthen <james.nurthen@oracle.com>
To:	Alexander Surkov <surkov.alexander@gmail.com>, Dominic Mazzoni
            <dmazzoni@google.com>
Cc:	W3C WAI Protocols & Formats <public-pfwg@w3.org>
Date:	02/17/2015 11:56 AM
Subject:	Re: make aria-owns to rearrange children



I like the querySelector idea - it would give a great deal of flexibility.

On 2/17/2015 9:36 AM, Alexander Surkov wrote:
      I think I like the idea to use querySelector for aria-owns value (for
      all idrefs attributes?).

      On Tue, Feb 17, 2015 at 12:20 PM, Dominic Mazzoni <
      dmazzoni@google.com> wrote:
        On Tue, Feb 17, 2015 at 9:09 AM, James Nurthen <
        james.nurthen@oracle.com> wrote:
         One issue with aria-owns is that as soon as you start to use it
         you end up with a massive number of idrefs.

        We discussed this problem a while back in the context of web
        components, and there were at least two possible solutions I
        thought could work:

        * Expose reflected attributes on an Element, allowing for example:
        parent.ariaOwns = [child3, child2, child1]; or
        parent.ariaActiveDescendant = child2;
        * Alllow a querySelector string in place of an idref, for example
        <tr aria-owns="query(.leftcells .rightcells)"> or <div
        aria-activedescendant="query([tabIndex='0'])">.

        Are you still interested in pursuing either of those, or even both?
        I might like to try implementing one of those behind a flag if the
        group can come to a tentative consensus.

        FWIW, I like Alexander's idea of allowing aria-owns for sibling
        relationships. I think we should do it either way, and then solve
        the IDREF problem in general.

        - Dominic

         Something I would like to be able to do is reference a parent node
         (with role=presentation) in aria-owns with the effect that its
         children would be owned.
         One place we hit this a lot is in grids with multiple scrollable
         regions. So, currently, in the following 2 rows table with 2
         scrollable regions, we have the following structure.

         <tr role="row" aria-owns="r1c1 r1c2 r1c3 r1c4 r1c5 r1c6">
           <td role="gridcell" id="r1c1">
           <td role="gridcell" id="r1c2">
         </tr>
         <tr role="row" aria-owns="r2c1 r2c2 r2c3 r2c4 r2c5 r2c6">
           <td role="gridcell" id="r2c1">
           <td role="gridcell" id="r2c2">
         </tr>
         <tr role="presentation">
           <td role="gridcell" id="r1c3">
           <td role="gridcell" id="r1c4">
           <td role="gridcell" id="r1c5">
           <td role="gridcell" id="r1c6">
         </tr>
         <tr role="presentation">
           <td role="gridcell" id="r2c3">
           <td role="gridcell" id="r2c4">
           <td role="gridcell" id="r2c5">
           <td role="gridcell" id="r2c6">
         </tr>

         What I would like to be able to (which I would like to have the
         same result in the API mapping) is the following

         <tr role="row" aria-owns="r1c1 r1c2 r1">
           <td role="gridcell" id="r1c1">
           <td role="gridcell" id="r1c2">
         </tr>
         <tr role="row" aria-owns="r2c1 r2c2 r2">
           <td role="gridcell" id="r2c1">
           <td role="gridcell" id="r2c2">
         </tr>
         <tr role="presentation" id="r1">
           <td role="gridcell">
           <td role="gridcell">
           <td role="gridcell">
           <td role="gridcell">
         </tr>
         <tr role="presentation" id="r2">
           <td role="gridcell">
           <td role="gridcell">
           <td role="gridcell">
           <td role="gridcell">
         </tr>

         Or, taking it one step further, allow aria-owns to reference
         itself, which would place the natural children of the element into
         the ownership at that point in the order so I could do:

         <tr role="row" aria-owns="t1r1 t2r1" id="t1r1">
           <td role="gridcell">
           <td role="gridcell">
         </tr>
         <tr role="row" aria-owns="t1r2 t2r2" id="t1r2">
           <td role="gridcell">
           <td role="gridcell">
         </tr>
         <tr role="presentation" id="t2r1">
           <td role="gridcell">
           <td role="gridcell">
           <td role="gridcell">
           <td role="gridcell">
         </tr>
         <tr role="presentation" id="t2r2">
           <td role="gridcell">
           <td role="gridcell">
           <td role="gridcell">
           <td role="gridcell">
         </tr>

         If people like this idea I would be happy to come up with some
         spec text to allow it.

         Regards,
         James


         On 2/15/2015 8:07 AM, Alexander Surkov wrote:
               Hi.

               aria-owns is used to define parent-child relationship [1].
               The spec says nothing how aria-owns affects on
               between-siblings relations, i.e. where aria-owns children
               have to be in the hierarchy. So there's no way for the
               author to control the ordering of explicit and aria-owns
               children. The idea [2] was to let aria-owns to refer its own
               children to change the ordering. For example,

               <div role="grid"
               <div role="row" aria-owns="c1 c2 c3 c4">
                 <div role="gridcell" id="c1">cell1</div>
                 <div role="gridcell" id="c2">cell1</div>
               </div>
               </div>

               <!-- somewhere in the DOM -->
               <div role="gridcell" id="c3">cell1</div>
               <div role="gridcell" id="c4">cell1</div>

               In this case role="row" would contain 4 cells in the order
               specified by aria-owns.

               If the idea looks reasonable then the spec could be changed
               this way

               Insert after existing wording:
               "The value of the aria-owns attribute is a space-separated
               list of IDREFS that reference one or more elements in the
               document by ID."

               something like:
               "The order the referred elements listed in the value should
               be preserved when their parent-child relationship is set.
               All explicit unreferred children should be considered
               followed aria-owns elements."

               Thanks.
               Alexander.

               [1]
               http://www.w3.org/WAI/PF/aria/states_and_properties#aria-owns

               [2] https://bugzilla.mozilla.org/show_bug.cgi?id=1133213

Received on Tuesday, 17 February 2015 20:36:53 UTC