From 52184e87c706dba4c3031f364a027c20bc1bbabc Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Thu, 18 Feb 2021 11:04:20 +0100
Subject: [PATCH] Fix #4543 : pas d'aria vaut mieux que du mauvais aria Les
 attributs aria-live &co sont a manier avec precaution car ils rendent la
 synthese vocale tres verbeuse et il est donc preferable de ne pas avoir
 d'aria qu'un aria automatique partout Sur les formulaires on garde la
 possibilite d'ajouter des attributs aria au cas par cas en ajoutant par
 exemple un data-aria='{"aria-live": "polite"}' sur le div.ajax Sur les blocs
 ajax cela disparait totalement

---
 prive/javascript/ajaxCallback.js | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/prive/javascript/ajaxCallback.js b/prive/javascript/ajaxCallback.js
index efc37f0646..898f17680d 100644
--- a/prive/javascript/ajaxCallback.js
+++ b/prive/javascript/ajaxCallback.js
@@ -221,9 +221,21 @@ jQuery.fn.formulaire_setContainer = function(){
 		// eviter une double execution du js au moment de sa reinsertion dans le DOM par wrap()
 		// cf http://bugs.jquery.com/ticket/7447
 		this.find('script').remove();
-		this.wrap('<div class="ajax-form-container" aria-live="polite" aria-atomic="true" aria-relevant="additions"></div>');
-		// dans un formulaire, le screen reader relit tout a chaque saisie d'un caractere si on est en aria-live
-		jQuery('form',this).not('[aria-live]').attr('aria-live','off');
+		var aria = this.data('aria');
+		var $container = jQuery('<div class="ajax-form-container"></div>');
+		if (aria && typeof aria === 'object') {
+			for (var i in aria) {
+				$container = $container.attr(i, aria[i]);
+			}
+		}
+		else {
+			aria = false;
+		}
+		this.wrap($container);
+		if (aria) {
+			// dans un formulaire, le screen reader relit tout a chaque saisie d'un caractere si on est en aria-live
+			jQuery('form',this).not('[aria-live]').attr('aria-live','off');
+		}
 	}
 	return this;
 }
@@ -731,12 +743,13 @@ jQuery.fn.ajaxbloc = function() {
 			if (jQuery.spip.ajaxReload(blocfrag,options))
 				// don't trig reload of parent blocks
 				event.stopPropagation();
-		}).addClass('bind-ajaxReload')
-			.attr('aria-live','polite').attr('aria-atomic','true');
+		}).addClass('bind-ajaxReload');
 
+		// "No aria is better than bad aria"
+		// blocfrag.attr('aria-live','polite').attr('aria-atomic','true')
 		// dans un formulaire, le screen reader relit tout a chaque saisie d'un caractere si on est en aria-live
 		// mettre un aria-live="off" sur les forms inclus dans ce bloc aria-live="polite"
-		jQuery('form',this).not('[aria-live]').attr('aria-live','off');
+		// jQuery('form',this).not('[aria-live]').attr('aria-live','off');
 
 		jQuery(ajaxbloc_selecteur,this).not('.noajax,.bind-ajax')
 			.click(function(){return jQuery.spip.ajaxClick(blocfrag,this.href,{force:jQuery(this).is('.nocache'),history:!(jQuery(this).is('.nohistory')||jQuery(this).closest('.box_modalbox').length)});})
-- 
GitLab