Skip to content

Commit e5933dc

Browse files
committed
Improve modal description accessibility
1 parent d75e144 commit e5933dc

File tree

3 files changed

+45
-3
lines changed

3 files changed

+45
-3
lines changed

liens-morts-detector-jlg/assets/js/blc-admin-scripts.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ jQuery(document).ready(function($) {
8888
$modal.attr('tabindex', '-1');
8989
}
9090

91+
var $dialog = $modal.find('[role="dialog"]');
9192
var $title = $modal.find('.blc-modal__title');
9293
var $message = $modal.find('.blc-modal__message');
9394
var $error = $modal.find('.blc-modal__error');
@@ -98,6 +99,12 @@ jQuery(document).ready(function($) {
9899
var $cancel = $modal.find('.blc-modal__cancel');
99100
var $close = $modal.find('.blc-modal__close');
100101

102+
var messageId = $message.attr('id');
103+
104+
if (messageId && $dialog.length && !$dialog.attr('aria-describedby')) {
105+
$dialog.attr('aria-describedby', messageId);
106+
}
107+
101108
var lastFocusedElement = null;
102109
var focusableSelectors = 'a[href], area[href], input:not([type="hidden"]), select, textarea, button, [tabindex], [contenteditable="true"]';
103110

@@ -219,7 +226,13 @@ jQuery(document).ready(function($) {
219226
lastFocusedElement = document.activeElement;
220227

221228
$title.text(options.title || '');
222-
$message.text(options.message || '');
229+
230+
var messageText = options.message || '';
231+
$message.text(messageText);
232+
233+
if (messageId && $dialog.length) {
234+
$dialog.attr('aria-describedby', messageId);
235+
}
223236

224237
var labelText = options.label || (state.showInput ? messages.editModalLabel : '');
225238
$label.text(labelText);

liens-morts-detector-jlg/includes/blc-admin-pages.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ function blc_render_action_modal() {
6565
$rendered = true;
6666
?>
6767
<div id="blc-modal" class="blc-modal" role="presentation" aria-hidden="true">
68-
<div class="blc-modal__dialog" role="dialog" aria-modal="true" aria-labelledby="blc-modal-title">
68+
<div class="blc-modal__dialog" role="dialog" aria-modal="true" aria-labelledby="blc-modal-title" aria-describedby="blc-modal-message">
6969
<button type="button" class="blc-modal__close" aria-label="<?php echo esc_attr__('Fermer la fenêtre modale', 'liens-morts-detector-jlg'); ?>">
7070
<span aria-hidden="true">&times;</span>
7171
</button>
7272
<h2 id="blc-modal-title" class="blc-modal__title"></h2>
73-
<p class="blc-modal__message"></p>
73+
<p id="blc-modal-message" class="blc-modal__message"></p>
7474
<div class="blc-modal__error" role="alert" aria-live="assertive"></div>
7575
<div class="blc-modal__field">
7676
<label for="blc-modal-url" class="blc-modal__label"></label>

tests/js/__tests__/blc-admin-scripts.test.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,24 @@ describe('blc-admin-scripts accessibility helper', () => {
2525
<button type="button" id="post-query-submit">Filtrer</button>
2626
</div>
2727
</div>
28+
<div id="blc-modal" class="blc-modal" role="presentation" aria-hidden="true">
29+
<div class="blc-modal__dialog" role="dialog" aria-modal="true" aria-labelledby="blc-modal-title" aria-describedby="blc-modal-message">
30+
<button type="button" class="blc-modal__close" aria-label="Fermer la fenêtre modale">
31+
<span aria-hidden="true">&times;</span>
32+
</button>
33+
<h2 id="blc-modal-title" class="blc-modal__title"></h2>
34+
<p id="blc-modal-message" class="blc-modal__message"></p>
35+
<div class="blc-modal__error" role="alert" aria-live="assertive"></div>
36+
<div class="blc-modal__field">
37+
<label for="blc-modal-url" class="blc-modal__label"></label>
38+
<input type="url" id="blc-modal-url" class="blc-modal__input" placeholder="https://">
39+
</div>
40+
<div class="blc-modal__actions">
41+
<button type="button" class="button button-secondary blc-modal__cancel">Annuler</button>
42+
<button type="button" class="button button-primary blc-modal__confirm">Confirmer</button>
43+
</div>
44+
</div>
45+
</div>
2846
`;
2947

3048
originalReady = $.fn.ready;
@@ -124,4 +142,15 @@ describe('blc-admin-scripts accessibility helper', () => {
124142

125143
expect(window.wp.a11y.speak).toHaveBeenCalledWith('La ligne a été mise à jour.', 'polite');
126144
});
145+
146+
it('maintains aria-describedby on the modal dialog when opened', () => {
147+
const trigger = $('#row-1 .blc-edit-link');
148+
149+
trigger.trigger('click');
150+
151+
const dialog = document.querySelector('.blc-modal__dialog');
152+
153+
expect(dialog).not.toBeNull();
154+
expect(dialog.getAttribute('aria-describedby')).toBe('blc-modal-message');
155+
});
127156
});

0 commit comments

Comments
 (0)