ICEfaces
  1. ICEfaces
  2. ICE-10743

ace:tableConfigPanel not keyboard navigable

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 4.0
    • Fix Version/s: 4.1
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      All
    • Assignee Priority:
      P2

      Description

      The ace:tableConfigPanel's control buttons are not keyboard navigable.

      They should be focussable with the keyboard via the Tab key, and when focussed, they should activate with the space key. Also, the space key event should be consumed by the button so the browser page doesn't scroll down in response to the spacebar being pressed.

      This applies to the button used to show the configuration panel popup, and to the control buttons in the popup itself.

        Activity

        Hide
        Arturo Zambrano added a comment -

        r45250: committed fixes to activate table config panel buttons (launcher, accept, cancel, trash) via the space key, while consuming the DOM event; also added similar fix for sort controls and checkboxes in the panel.

        Note: the sortable handlers (to the left) cannot be activated via the keyboard because their function is to serve as a handle for the sortable widget to reorder the columns arbitrarily, instead of having a discrete function.

        Show
        Arturo Zambrano added a comment - r45250: committed fixes to activate table config panel buttons (launcher, accept, cancel, trash) via the space key, while consuming the DOM event; also added similar fix for sort controls and checkboxes in the panel. Note: the sortable handlers (to the left) cannot be activated via the keyboard because their function is to serve as a handle for the sortable widget to reorder the columns arbitrarily, instead of having a discrete function.
        Hide
        Ken Fyten added a comment -

        A nice-to-have would be if focus was set on the handle for sort order and the up or down (or home/end) key was pressed, the row would move up or down one row (or to the top or bottom of the list) accordingly.

        Show
        Ken Fyten added a comment - A nice-to-have would be if focus was set on the handle for sort order and the up or down (or home/end) key was pressed, the row would move up or down one row (or to the top or bottom of the list) accordingly.
        Hide
        Arturo Zambrano added a comment -

        Closing issue since keyboard support for the handle element would require more time and effort to implement. The internal Sortable API is not laid out to simply modify a model object with the order of the items and them refresh the DOM. The positioning of the sortable elements is handled by the Draggable widget and by other sortable internal methods that act on drag and drop events, as the items are dragged. There's a ticket to add keyboard support to the Sortable widget in the jQuery UI's issue tracker, but no progress has been made yet. Likewise, there are no other solutions or workarounds found on the web.

        Show
        Arturo Zambrano added a comment - Closing issue since keyboard support for the handle element would require more time and effort to implement. The internal Sortable API is not laid out to simply modify a model object with the order of the items and them refresh the DOM. The positioning of the sortable elements is handled by the Draggable widget and by other sortable internal methods that act on drag and drop events, as the items are dragged. There's a ticket to add keyboard support to the Sortable widget in the jQuery UI's issue tracker, but no progress has been made yet. Likewise, there are no other solutions or workarounds found on the web.
        Hide
        Liana Munroe added a comment -

        Tested with ICEfaces 4 trunk r45257, Tomcat 7, FF 34, Chrome 43, IE 11.
        The sort controls and check boxes can be focussed on by using the Tab key and are activated with Space bar. When the config panel is first opened and space bar is pressed the panel closes immediately. I was not able to tab through each of the table config panel buttons because placing focus on any of them closes the panel.
        I was able to tab to the launcher and activate it with Space bar.
        IE 11 was the only tested browser that maintains focus in the config panel after it was opened. FF and Chrome console logs show that the focus is placed back on the dataTable after opening the config panel. If you click inside the panel the focus will stay within while tabbing around.
        The IE 11 console log shows focus points for all but the buttons (trash, cancel etc.) as seen by the following log. This was tested by opening the launcher with Space bar then tabbing through the config panel.
        [window] [Tue, 30 Jun 2015 17:00:11 GMT] persisted focus for element ""
        [window] [Tue, 30 Jun 2015 17:00:11 GMT] persisted focus for element ""
        [window] [Tue, 30 Jun 2015 17:00:12 GMT] persisted focus for element "configPanel_tableconf_launch"
        [window] [Tue, 30 Jun 2015 17:00:16 GMT] persisted focus for element "table:upc_sortControl_up"
        [window] [Tue, 30 Jun 2015 17:00:17 GMT] persisted focus for element "table:upc_sortControl_down"
        [window] [Tue, 30 Jun 2015 17:00:18 GMT] persisted focus for element "table:upc_filter"
        [window] [Tue, 30 Jun 2015 17:00:18 GMT] persisted focus for element "table:album_sortControl_up"
        [window] [Tue, 30 Jun 2015 17:00:19 GMT] persisted focus for element "table:album_sortControl_down"
        [window] [Tue, 30 Jun 2015 17:00:19 GMT] persisted focus for element "table:album_filter"
        [window] [Tue, 30 Jun 2015 17:00:19 GMT] persisted focus for element "table:artist_sortControl_up"
        [window] [Tue, 30 Jun 2015 17:00:19 GMT] persisted focus for element "table:artist_sortControl_down"
        [window] [Tue, 30 Jun 2015 17:00:20 GMT] persisted focus for element "table:artist_filter"
        [window] [Tue, 30 Jun 2015 17:00:20 GMT] persisted focus for element "table:name_sortControl_up"
        [window] [Tue, 30 Jun 2015 17:00:20 GMT] persisted focus for element "table:name_sortControl_down"
        [window] [Tue, 30 Jun 2015 17:00:20 GMT] persisted focus for element "table:amg_sortControl_up"
        [window] [Tue, 30 Jun 2015 17:00:21 GMT] persisted focus for element "table:amg_sortControl_down"
        [window] [Tue, 30 Jun 2015 17:00:21 GMT] persisted focus for element "table:pitchFork_sortControl_up"
        [window] [Tue, 30 Jun 2015 17:00:21 GMT] persisted focus for element "table:pitchFork_sortControl_down"
        [window] [Tue, 30 Jun 2015 17:00:22 GMT] persisted focus for element "table:iTunes_sortControl_up"
        [window] [Tue, 30 Jun 2015 17:00:22 GMT] persisted focus for element "table:iTunes_sortControl_down"
        [window] [Tue, 30 Jun 2015 17:00:22 GMT] persisted focus for element "table:bnm_sortControl_up"
        [window] [Tue, 30 Jun 2015 17:00:22 GMT] persisted focus for element "table:bnm_sortControl_down"
        [window] [Tue, 30 Jun 2015 17:00:23 GMT] persisted focus for element "table_row_0"
        [window] [Tue, 30 Jun 2015 17:00:23 GMT] persisted focus for element "table:0:j_idt10"
        [window] [Tue, 30 Jun 2015 17:00:23 GMT] persisted focus for element "table:0:j_idt10"
        [window] [Tue, 30 Jun 2015 17:00:26 GMT] persisted focus for element "table:0:j_idt35_button"
        [window] [Tue, 30 Jun 2015 17:00:28 GMT] persisted focus for element "table_row_1"
        [window] [Tue, 30 Jun 2015 17:00:29 GMT] persisted focus for element "table:1:j_idt10"
        [window] [Tue, 30 Jun 2015 17:00:29 GMT] persisted focus for element "table:1:j_idt10"

        Show
        Liana Munroe added a comment - Tested with ICEfaces 4 trunk r45257, Tomcat 7, FF 34, Chrome 43, IE 11. The sort controls and check boxes can be focussed on by using the Tab key and are activated with Space bar. When the config panel is first opened and space bar is pressed the panel closes immediately. I was not able to tab through each of the table config panel buttons because placing focus on any of them closes the panel. I was able to tab to the launcher and activate it with Space bar. IE 11 was the only tested browser that maintains focus in the config panel after it was opened. FF and Chrome console logs show that the focus is placed back on the dataTable after opening the config panel. If you click inside the panel the focus will stay within while tabbing around. The IE 11 console log shows focus points for all but the buttons (trash, cancel etc.) as seen by the following log. This was tested by opening the launcher with Space bar then tabbing through the config panel. [window] [Tue, 30 Jun 2015 17:00:11 GMT] persisted focus for element "" [window] [Tue, 30 Jun 2015 17:00:11 GMT] persisted focus for element "" [window] [Tue, 30 Jun 2015 17:00:12 GMT] persisted focus for element "configPanel_tableconf_launch" [window] [Tue, 30 Jun 2015 17:00:16 GMT] persisted focus for element "table:upc_sortControl_up" [window] [Tue, 30 Jun 2015 17:00:17 GMT] persisted focus for element "table:upc_sortControl_down" [window] [Tue, 30 Jun 2015 17:00:18 GMT] persisted focus for element "table:upc_filter" [window] [Tue, 30 Jun 2015 17:00:18 GMT] persisted focus for element "table:album_sortControl_up" [window] [Tue, 30 Jun 2015 17:00:19 GMT] persisted focus for element "table:album_sortControl_down" [window] [Tue, 30 Jun 2015 17:00:19 GMT] persisted focus for element "table:album_filter" [window] [Tue, 30 Jun 2015 17:00:19 GMT] persisted focus for element "table:artist_sortControl_up" [window] [Tue, 30 Jun 2015 17:00:19 GMT] persisted focus for element "table:artist_sortControl_down" [window] [Tue, 30 Jun 2015 17:00:20 GMT] persisted focus for element "table:artist_filter" [window] [Tue, 30 Jun 2015 17:00:20 GMT] persisted focus for element "table:name_sortControl_up" [window] [Tue, 30 Jun 2015 17:00:20 GMT] persisted focus for element "table:name_sortControl_down" [window] [Tue, 30 Jun 2015 17:00:20 GMT] persisted focus for element "table:amg_sortControl_up" [window] [Tue, 30 Jun 2015 17:00:21 GMT] persisted focus for element "table:amg_sortControl_down" [window] [Tue, 30 Jun 2015 17:00:21 GMT] persisted focus for element "table:pitchFork_sortControl_up" [window] [Tue, 30 Jun 2015 17:00:21 GMT] persisted focus for element "table:pitchFork_sortControl_down" [window] [Tue, 30 Jun 2015 17:00:22 GMT] persisted focus for element "table:iTunes_sortControl_up" [window] [Tue, 30 Jun 2015 17:00:22 GMT] persisted focus for element "table:iTunes_sortControl_down" [window] [Tue, 30 Jun 2015 17:00:22 GMT] persisted focus for element "table:bnm_sortControl_up" [window] [Tue, 30 Jun 2015 17:00:22 GMT] persisted focus for element "table:bnm_sortControl_down" [window] [Tue, 30 Jun 2015 17:00:23 GMT] persisted focus for element "table_row_0" [window] [Tue, 30 Jun 2015 17:00:23 GMT] persisted focus for element "table:0:j_idt10" [window] [Tue, 30 Jun 2015 17:00:23 GMT] persisted focus for element "table:0:j_idt10" [window] [Tue, 30 Jun 2015 17:00:26 GMT] persisted focus for element "table:0:j_idt35_button" [window] [Tue, 30 Jun 2015 17:00:28 GMT] persisted focus for element "table_row_1" [window] [Tue, 30 Jun 2015 17:00:29 GMT] persisted focus for element "table:1:j_idt10" [window] [Tue, 30 Jun 2015 17:00:29 GMT] persisted focus for element "table:1:j_idt10"
        Hide
        Arturo Zambrano added a comment - - edited

        r45261: fix to give focus to the cancel button after opening config panel.

        This fix gives focus to one of the panel buttons so that the user can access the other controls more quickly when using the keyboard.

        I couldn't reproduce the following issues on the DataTable QA app (/views/configPanelTest.jsf):

        > When the config panel is first opened and space bar is pressed the panel closes immediately.
        > I was not able to tab through each of the table config panel buttons because placing focus on any of them closes the panel.
        > The IE 11 console log shows focus points for all but the buttons (trash, cancel etc.) as seen by the following log. This was tested by opening the launcher with Space bar then tabbing through the config panel.

        As I understand the first one, that is expected, since the focus was kept in the launcher and now it's given to the cancel button, so if you press space again, the panel will close.

        As for the others, I was able to focus all the buttons on Chrome, IE11 and FF.

        Please test these issues again, and if they're reproducible, let me know on which test app/page they are reproducible.

        Show
        Arturo Zambrano added a comment - - edited r45261: fix to give focus to the cancel button after opening config panel. This fix gives focus to one of the panel buttons so that the user can access the other controls more quickly when using the keyboard. I couldn't reproduce the following issues on the DataTable QA app (/views/configPanelTest.jsf): > When the config panel is first opened and space bar is pressed the panel closes immediately. > I was not able to tab through each of the table config panel buttons because placing focus on any of them closes the panel. > The IE 11 console log shows focus points for all but the buttons (trash, cancel etc.) as seen by the following log. This was tested by opening the launcher with Space bar then tabbing through the config panel. As I understand the first one, that is expected, since the focus was kept in the launcher and now it's given to the cancel button, so if you press space again, the panel will close. As for the others, I was able to focus all the buttons on Chrome, IE11 and FF. Please test these issues again, and if they're reproducible, let me know on which test app/page they are reproducible.
        Hide
        Liana Munroe added a comment -

        Verified ICEfaces 4 trunk r45261, using QA configPanelTest.jsf Tomcat 7, IE 11, 10, 8, FF 34, Chrome 43.

        Show
        Liana Munroe added a comment - Verified ICEfaces 4 trunk r45261, using QA configPanelTest.jsf Tomcat 7, IE 11, 10, 8, FF 34, Chrome 43.
        Hide
        Ken Fyten added a comment -

        One strange thing I noticed with this is that that tab order inside the tableConfigPanel seems wrong. When the panel is initially displayed, focus is set to the "X" button at the top right corner by default. If you then press Tab, focus moves to the "reset changes" trashcan button to the left of the X button. Another tab moves the focus further left again to the first sort order handle. This is counter-intuitive, pressing Tab at the "X" button should move focus to the right, to the "Check" button, and then down into the focus handle. Pressing Shift-Tab from the "X" button should move focus to the Trashcan.

        Show
        Ken Fyten added a comment - One strange thing I noticed with this is that that tab order inside the tableConfigPanel seems wrong. When the panel is initially displayed, focus is set to the "X" button at the top right corner by default. If you then press Tab, focus moves to the "reset changes" trashcan button to the left of the X button. Another tab moves the focus further left again to the first sort order handle. This is counter-intuitive, pressing Tab at the "X" button should move focus to the right, to the "Check" button, and then down into the focus handle. Pressing Shift-Tab from the "X" button should move focus to the Trashcan.
        Hide
        Arturo Zambrano added a comment -

        r45578: committed fix to tab buttons in a more intuitive order.

        The reason for the unintuitive order was the use of float:right, individually in the buttons.

        Show
        Arturo Zambrano added a comment - r45578: committed fix to tab buttons in a more intuitive order. The reason for the unintuitive order was the use of float:right, individually in the buttons.
        Hide
        Liana Munroe added a comment -

        Verified ICEfaces 4 trunk r45580, Tomcat 7, IE 11, 10, 9, 8, FF 34, Chrome 43.

        Show
        Liana Munroe added a comment - Verified ICEfaces 4 trunk r45580, Tomcat 7, IE 11, 10, 9, 8, FF 34, Chrome 43.

          People

          • Assignee:
            Arturo Zambrano
            Reporter:
            Ken Fyten
          • Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: