mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2024-11-26 02:30:21 -06:00
Fix an accessibility issue to maximize the panel for all alertify dialog. Fixes #5143
This commit is contained in:
parent
0ed3cd248b
commit
82155cd859
@ -11,6 +11,7 @@ notes for it.
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
|
release_notes_4_20
|
||||||
release_notes_4_19
|
release_notes_4_19
|
||||||
release_notes_4_18
|
release_notes_4_18
|
||||||
release_notes_4_17
|
release_notes_4_17
|
||||||
|
20
docs/en_US/release_notes_4_20.rst
Normal file
20
docs/en_US/release_notes_4_20.rst
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
************
|
||||||
|
Version 4.20
|
||||||
|
************
|
||||||
|
|
||||||
|
Release date: 2020-04-02
|
||||||
|
|
||||||
|
This release contains a number of bug fixes and new features since the release of pgAdmin4 4.19.
|
||||||
|
|
||||||
|
New features
|
||||||
|
************
|
||||||
|
|
||||||
|
|
||||||
|
Housekeeping
|
||||||
|
************
|
||||||
|
|
||||||
|
|
||||||
|
Bug fixes
|
||||||
|
*********
|
||||||
|
|
||||||
|
| `Issue #5143 <https://redmine.postgresql.org/issues/5143>`_ - Fix an accessibility issue to maximize the panel for all alertify dialog.
|
@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
define(
|
define(
|
||||||
['jquery', 'alertify', 'sources/pgadmin', 'sources/gettext',
|
['jquery', 'alertify', 'sources/pgadmin', 'sources/gettext',
|
||||||
'sources/url_for',
|
'sources/url_for','sources/utils',
|
||||||
],
|
],
|
||||||
function($, alertify, pgAdmin, gettext, url_for) {
|
function($, alertify, pgAdmin, gettext, url_for, commonUtils) {
|
||||||
pgAdmin = pgAdmin || window.pgAdmin || {};
|
pgAdmin = pgAdmin || window.pgAdmin || {};
|
||||||
|
|
||||||
/* Return back, this has been called more than once */
|
/* Return back, this has been called more than once */
|
||||||
@ -43,8 +43,16 @@ define(
|
|||||||
build: function() {
|
build: function() {
|
||||||
alertify.pgDialogBuild.apply(this);
|
alertify.pgDialogBuild.apply(this);
|
||||||
},
|
},
|
||||||
|
hooks:{
|
||||||
|
onshow:function(){
|
||||||
|
var container = $(this.elements.footer).find('button:not([disabled])');
|
||||||
|
commonUtils.findAndSetFocus(container);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
prepare:function() {
|
prepare:function() {
|
||||||
this.setContent(this.message);
|
this.setContent(this.message);
|
||||||
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
@ -8,8 +8,8 @@
|
|||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
define([
|
define([
|
||||||
'sources/gettext', 'alertify', 'jquery',
|
'sources/gettext', 'alertify', 'jquery', 'sources/utils',
|
||||||
], function(gettext, alertify, $) {
|
], function(gettext, alertify, $, commonUtils) {
|
||||||
alertify.defaults.transition = 'zoom';
|
alertify.defaults.transition = 'zoom';
|
||||||
alertify.defaults.theme.ok = 'btn btn-primary fa fa-lg fa-check pg-alertify-button';
|
alertify.defaults.theme.ok = 'btn btn-primary fa fa-lg fa-check pg-alertify-button';
|
||||||
alertify.defaults.theme.cancel = 'btn btn-secondary fa fa-lg fa-times pg-alertify-button';
|
alertify.defaults.theme.cancel = 'btn btn-secondary fa fa-lg fa-times pg-alertify-button';
|
||||||
@ -263,7 +263,15 @@ define([
|
|||||||
$(this.elements.commands.close).attr('aria-label', gettext('Close'));
|
$(this.elements.commands.close).attr('aria-label', gettext('Close'));
|
||||||
$(this.elements.commands.maximize).attr('aria-label', gettext('Maximize'));
|
$(this.elements.commands.maximize).attr('aria-label', gettext('Maximize'));
|
||||||
alertifyDialogResized.apply(this, arguments);
|
alertifyDialogResized.apply(this, arguments);
|
||||||
});
|
let self = this;
|
||||||
|
|
||||||
|
let cmds = Object.values(this.elements.commands);
|
||||||
|
$(cmds).on('keydown', 'button', (event) => {
|
||||||
|
if (event.shiftKey && event.keyCode == 9 && $(this).nextAll('button:not([disabled])').length == 0){
|
||||||
|
let container = $(self.elements.footer);
|
||||||
|
commonUtils.findAndSetFocus(container.find('button:not([disabled]):last'));
|
||||||
|
}
|
||||||
|
}); });
|
||||||
this.set('onresize', alertifyDialogStartResizing.bind(this, true));
|
this.set('onresize', alertifyDialogStartResizing.bind(this, true));
|
||||||
this.set('onresized', alertifyDialogResized.bind(this, true));
|
this.set('onresized', alertifyDialogResized.bind(this, true));
|
||||||
this.set('onmaximized', alertifyDialogResized);
|
this.set('onmaximized', alertifyDialogResized);
|
||||||
@ -279,6 +287,15 @@ define([
|
|||||||
this.__internal.buttons[i]['key'] = null;
|
this.__internal.buttons[i]['key'] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let self = this;
|
||||||
|
|
||||||
|
$(this.elements.footer).on('keydown', 'button', function(event) {
|
||||||
|
if (!event.shiftKey && event.keyCode == 9 && $(this).nextAll('button:not([disabled])').length == 0) {
|
||||||
|
// set focus back to first editable input element of current active tab once we cycle through all enabled buttons.
|
||||||
|
commonUtils.findAndSetFocus($(self.elements.dialog));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
alertify.pgHandleItemError = function(xhr, error, message, args) {
|
alertify.pgHandleItemError = function(xhr, error, message, args) {
|
||||||
|
@ -60,14 +60,6 @@ export class DialogWrapper {
|
|||||||
this.pgBrowser.keyboardNavigation.getDialogTabNavigator($(alertifyDialog.elements.dialog));
|
this.pgBrowser.keyboardNavigation.getDialogTabNavigator($(alertifyDialog.elements.dialog));
|
||||||
const container = backform_tab.find('.tab-content:first > .tab-pane.active:first');
|
const container = backform_tab.find('.tab-content:first > .tab-pane.active:first');
|
||||||
commonUtils.findAndSetFocus(container);
|
commonUtils.findAndSetFocus(container);
|
||||||
|
|
||||||
$(alertifyDialog.elements.footer).on('keydown', 'button', function(event) {
|
|
||||||
if (event.keyCode == 9 && $(this).nextAll('button:not([disabled])').length == 0) {
|
|
||||||
// set focus back to first editable input element of current active tab once we cycle through all enabled buttons.
|
|
||||||
commonUtils.findAndSetFocus($(alertifyDialog.elements.dialog));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
isNodeSelected(selectedTreeNode) {
|
isNodeSelected(selectedTreeNode) {
|
||||||
|
@ -13,13 +13,14 @@ define([
|
|||||||
'pgadmin.alertifyjs', 'pgadmin.backgrid', 'pgadmin.backform',
|
'pgadmin.alertifyjs', 'pgadmin.backgrid', 'pgadmin.backform',
|
||||||
'pgadmin.browser', 'pgadmin.browser.node',
|
'pgadmin.browser', 'pgadmin.browser.node',
|
||||||
'tools/grant_wizard/static/js/menu_utils',
|
'tools/grant_wizard/static/js/menu_utils',
|
||||||
|
'sources/utils',
|
||||||
'sources/nodes/supported_database_node',
|
'sources/nodes/supported_database_node',
|
||||||
'backgrid.select.all',
|
'backgrid.select.all',
|
||||||
'backgrid.filter', 'pgadmin.browser.server.privilege',
|
'backgrid.filter', 'pgadmin.browser.server.privilege',
|
||||||
'pgadmin.browser.wizard',
|
'pgadmin.browser.wizard',
|
||||||
], function(
|
], function(
|
||||||
gettext, url_for, $, _, Backbone, Alertify, Backgrid, Backform, pgBrowser,
|
gettext, url_for, $, _, Backbone, Alertify, Backgrid, Backform, pgBrowser,
|
||||||
pgNode, menuUtils, supportedNodes
|
pgNode, menuUtils, commonUtils, supportedNodes
|
||||||
) {
|
) {
|
||||||
|
|
||||||
// if module is already initialized, refer to that.
|
// if module is already initialized, refer to that.
|
||||||
@ -104,8 +105,6 @@ define([
|
|||||||
// Do not use parent's render function. It set's tabindex to -1 on
|
// Do not use parent's render function. It set's tabindex to -1 on
|
||||||
// checkboxes.
|
// checkboxes.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var col = this.column.get('name');
|
var col = this.column.get('name');
|
||||||
let id = `row-${_.uniqueId(col)}`;
|
let id = `row-${_.uniqueId(col)}`;
|
||||||
this.$el.empty().append(`
|
this.$el.empty().append(`
|
||||||
@ -429,6 +428,35 @@ define([
|
|||||||
});
|
});
|
||||||
|
|
||||||
},
|
},
|
||||||
|
hooks: {
|
||||||
|
onshow: function() {
|
||||||
|
commonUtils.findAndSetFocus($(this.elements.body));
|
||||||
|
let self = this;
|
||||||
|
let containerFooter = $(this.elements.content).find('.wizard-buttons').find('.ml-auto');
|
||||||
|
//To get last header button
|
||||||
|
let lastHeaderButton = $(this.elements.content).find('.wizard-header').find('.ml-auto').find('button:first');
|
||||||
|
|
||||||
|
$(containerFooter).on('keydown', 'button', function(event) {
|
||||||
|
if (!event.shiftKey && event.keyCode == 9 && $(this).nextAll('button:not([disabled])').length == 0) {
|
||||||
|
// set focus back to first editable input element of current active tab once we cycle through all enabled buttons.
|
||||||
|
let container = $(self.elements.content).find('.wizard-header');
|
||||||
|
commonUtils.findAndSetFocus(container.find('button:not([disabled]):first'));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(lastHeaderButton).on('keydown', function(event) {
|
||||||
|
if (event.shiftKey && event.keyCode == 9) {
|
||||||
|
// set focus back to first element of current active tab once we cycle through all enabled buttons.
|
||||||
|
let container = $(self.elements.content).find('.wizard-footer');
|
||||||
|
commonUtils.findAndSetFocus(container.find('button:not([disabled]):last'));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
prepare: function() {
|
prepare: function() {
|
||||||
var that = this;
|
var that = this;
|
||||||
$container.empty().append('<div class=\'grant_wizard_container\'></div>');
|
$container.empty().append('<div class=\'grant_wizard_container\'></div>');
|
||||||
|
Loading…
Reference in New Issue
Block a user