Hi Dave, Please find the attached patch for jasmine tests fix. Patch also includes fixes for edit/delete cell focus on IE by Murtuza.
Regards, Ganesh Jaybhay On Thu, Jul 11, 2019 at 3:49 PM Dave Page <dp...@pgadmin.org> wrote: > Hi Ganesh, > > It looks like this has broken the Jasmine tests (which I admit I forgot to > run before committing). Can you fix ASAP please? > > Thanks. > > On Thu, Jul 11, 2019 at 10:14 AM Dave Page <dp...@pgadmin.org> wrote: > >> Thanks - patch applied with some doc tweaks. >> >> No need for a new ticket! >> >> On Thu, Jul 11, 2019 at 7:00 AM Ganesh Jaybhay < >> ganesh.jayb...@enterprisedb.com> wrote: >> >>> Hi Dave, >>> >>> Ticket number 3919 refers to keyboard accessibility issues for sub-node >>> control and back grid but this patch covers only sub-node control. Should I >>> create new one? >>> I have added the screenshot having newly added shortcut and updated >>> keyboard shortcut rst file. Also moved the code changes from backgrid.js to >>> backgrid.pgadmin.js. >>> >>> Please find the attached updated patch. >>> >>> Regards, >>> Ganesh Jaybhay >>> >>> On Tue, Jul 9, 2019 at 9:28 PM Dave Page <dp...@pgadmin.org> wrote: >>> >>>> Hi, >>>> >>>> What's the ticket number for this? That's a fair amount of code for a >>>> one-line description. There are also no doc changes describing how to >>>> navigate the sub-node control that I can see. >>>> >>>> Also; instead of changing the repo used for backgrid, can we not >>>> un-vendorise it? >>>> >>>> On Mon, Jul 8, 2019 at 4:49 PM Ganesh Jaybhay < >>>> ganesh.jayb...@enterprisedb.com> wrote: >>>> >>>>> Hi Hackers, >>>>> >>>>> Attached is the patch for keyboard accessibility of sub-node control. >>>>> It also covers sub-node dialog forward/backward tab navigation with >>>>> shortcuts. >>>>> >>>>> Kindly review. >>>>> >>>>> Regards, >>>>> Ganesh Jaybhay >>>>> >>>> >>>> >>>> -- >>>> Dave Page >>>> Blog: http://pgsnake.blogspot.com >>>> Twitter: @pgsnake >>>> >>>> EnterpriseDB UK: http://www.enterprisedb.com >>>> The Enterprise PostgreSQL Company >>>> >>> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company >
diff --git a/web/pgadmin/static/js/backgrid.pgadmin.js b/web/pgadmin/static/js/backgrid.pgadmin.js index 0d968aa..8275138 100644 --- a/web/pgadmin/static/js/backgrid.pgadmin.js +++ b/web/pgadmin/static/js/backgrid.pgadmin.js @@ -206,6 +206,11 @@ define([ if(cell && cell.$el.hasClass('edit-cell') && !cell.$el.hasClass('privileges') || cell.$el.hasClass('delete-cell')) { model.trigger('backgrid:next', m, n, false); + if(cell.$el.hasClass('delete-cell')) { + setTimeout(function(){ + $(cell.$el).trigger('focus'); + }, 50); + } break; } else if (renderable && editable) { cell.enterEditMode(); diff --git a/web/pgadmin/static/scss/_pgadmin.style.scss b/web/pgadmin/static/scss/_pgadmin.style.scss index 8f1e248..082e82c 100644 --- a/web/pgadmin/static/scss/_pgadmin.style.scss +++ b/web/pgadmin/static/scss/_pgadmin.style.scss @@ -741,6 +741,17 @@ table tr td { } } +/* Specific to IE11 where we want to highlight the focus on grid buttons */ +@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { + table tr td { + td.edit-cell:focus, + td.delete-cell:focus, + td.string-cell:focus { + border: 2px solid $input-focus-border-color !important;; + } + } +} + .privilege_label{ font-size: 10px!important; } diff --git a/web/regression/javascript/dialog_tab_navigator_spec.js b/web/regression/javascript/dialog_tab_navigator_spec.js index 8e86fc8..60e4bdd 100644 --- a/web/regression/javascript/dialog_tab_navigator_spec.js +++ b/web/regression/javascript/dialog_tab_navigator_spec.js @@ -11,7 +11,7 @@ import $ from 'jquery'; import 'bootstrap'; describe('dialogTabNavigator', function () { - let dialog, tabNavigator, backward_shortcut, forward_shortcut; + let dialog, tabNavigator, backward_shortcut, forward_shortcut, fakeEvent; beforeEach(() => { dialog = $('<div tabindex="1" class="backform-tab" role="tabpanel">'+ @@ -68,6 +68,9 @@ describe('dialogTabNavigator', function () { tabNavigator = new dialogTabNavigator.dialogTabNavigator( dialog, backward_shortcut, forward_shortcut); + + fakeEvent = { stopPropagation: () => true }; + }); describe('navigate', function () { @@ -79,7 +82,7 @@ describe('dialogTabNavigator', function () { }); it('navigate backward', function () { - tabNavigator.onKeyboardEvent({}, 'shift+ctrl+['); + tabNavigator.onKeyboardEvent(fakeEvent, 'shift+ctrl+['); expect(tabNavigator.navigateBackward).toHaveBeenCalled(); @@ -88,7 +91,7 @@ describe('dialogTabNavigator', function () { }); it('navigate forward', function () { - tabNavigator.onKeyboardEvent({}, 'shift+ctrl+]'); + tabNavigator.onKeyboardEvent(fakeEvent, 'shift+ctrl+]'); expect(tabNavigator.navigateForward).toHaveBeenCalled(); @@ -97,7 +100,7 @@ describe('dialogTabNavigator', function () { }); it('should not navigate', function () { - tabNavigator.onKeyboardEvent({}, 'shift+ctrl+a'); + tabNavigator.onKeyboardEvent(fakeEvent, 'shift+ctrl+a'); expect(tabNavigator.navigateForward).not.toHaveBeenCalled(); @@ -115,7 +118,8 @@ describe('dialogTabNavigator', function () { navigateForwardResult = tabNavigator.navigateForward( dialog.find('ul.nav-tabs:first'), - dialog.find('div#1') + dialog.find('div#1'), + fakeEvent ); }); @@ -141,7 +145,8 @@ describe('dialogTabNavigator', function () { navigateForwardResult = tabNavigator.navigateForward( dialog.find('ul.nav-tabs:first'), - dialog.find('div#1') + dialog.find('div#1'), + fakeEvent ); }); @@ -165,7 +170,8 @@ describe('dialogTabNavigator', function () { navigateBackwardResult = tabNavigator.navigateBackward( dialog.find('ul.nav-tabs:first'), - dialog.find('div#1') + dialog.find('div#1'), + fakeEvent ); }); @@ -184,7 +190,8 @@ describe('dialogTabNavigator', function () { navigateBackwardResult = tabNavigator.navigateBackward( dialog.find('ul.nav-tabs:first'), - dialog.find('div#1') + dialog.find('div#1'), + fakeEvent ); });