From 08a077658dd99dcbf31fefc2e206bc93946e1990 Mon Sep 17 00:00:00 2001 From: whyisjake Date: Wed, 18 Sep 2019 17:41:55 +0000 Subject: [PATCH] Accessibility: Replace wp-a11y.js with @wordpress/a11y package MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We've extracted wp-includes/wp-a11y.js to a reusable package wordpress/a11y which is published on NPM. Let's make sure this package is also used in WordPress core. Once all the JavaScript is built using webpack, we can also import this package wherever it is used and configure webpack to load is an external. Props omarreiss, herregroen, desrosj, ocean90, afercia, sstoqnov Built from https://develop.svn.wordpress.org/trunk@46167 git-svn-id: http://core.svn.wordpress.org/trunk@45979 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/includes/update-core.php | 3 + wp-includes/js/wp-a11y.js | 107 ------------------------------ wp-includes/js/wp-a11y.min.js | 1 - wp-includes/version.php | 2 +- 4 files changed, 4 insertions(+), 109 deletions(-) delete mode 100644 wp-includes/js/wp-a11y.js delete mode 100644 wp-includes/js/wp-a11y.min.js diff --git a/wp-admin/includes/update-core.php b/wp-admin/includes/update-core.php index d031a901e0..e0ac9450ef 100644 --- a/wp-admin/includes/update-core.php +++ b/wp-admin/includes/update-core.php @@ -786,6 +786,9 @@ $_old_files = array( // 5.1 'wp-includes/random_compat/random_bytes_openssl.php', 'wp-includes/js/tinymce/wp-tinymce.js.gz', + // 5.3 + 'wp-includes/js/wp-a11y.js', // Moved to: wp-includes/js/dist/a11y.js + 'wp-includes/js/wp-a11y.min.js', // Moved to: wp-includes/js/dist/a11y.min.js ); /** diff --git a/wp-includes/js/wp-a11y.js b/wp-includes/js/wp-a11y.js deleted file mode 100644 index 648b629d37..0000000000 --- a/wp-includes/js/wp-a11y.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * @output wp-includes/js/wp-a11y.js - */ - -/** @namespace wp */ -window.wp = window.wp || {}; - -( function ( wp, $ ) { - 'use strict'; - - var $containerPolite, - $containerAssertive, - previousMessage = ''; - - /** - * Update the ARIA live notification area text node. - * - * @since 4.2.0 - * @since 4.3.0 Introduced the 'ariaLive' argument. - * - * @param {String} message The message to be announced by Assistive Technologies. - * @param {String} [ariaLive] The politeness level for aria-live. Possible values: - * polite or assertive. Default polite. - * @returns {void} - */ - function speak( message, ariaLive ) { - // Clear previous messages to allow repeated strings being read out. - clear(); - - // Remove HTML tags, ensuring only text is sent to screen readers. - message = wp.sanitize.stripTagsAndEncodeText( message ); - - /* - * Safari 10+VoiceOver don't announce repeated, identical strings. We use - * a `no-break space` to force them to think identical strings are different. - * See ticket #36853. - */ - if ( previousMessage === message ) { - message = message + '\u00A0'; - } - - previousMessage = message; - - if ( $containerAssertive && 'assertive' === ariaLive ) { - $containerAssertive.text( message ); - } else if ( $containerPolite ) { - $containerPolite.text( message ); - } - } - - /** - * Build the live regions markup. - * - * @since 4.3.0 - * - * @param {String} ariaLive Optional. Value for the 'aria-live' attribute, default 'polite'. - * - * @return {Object} $container The ARIA live region jQuery object. - */ - function addContainer( ariaLive ) { - ariaLive = ariaLive || 'polite'; - - var $container = $( '
', { - 'id': 'wp-a11y-speak-' + ariaLive, - 'aria-live': ariaLive, - 'aria-relevant': 'additions text', - 'aria-atomic': 'true', - 'class': 'screen-reader-text wp-a11y-speak-region' - }); - - $( document.body ).append( $container ); - return $container; - } - - /** - * Clear the live regions. - * - * @since 4.3.0 - */ - function clear() { - $( '.wp-a11y-speak-region' ).text( '' ); - } - - /** - * Initialize wp.a11y and define ARIA live notification area. - * - * @since 4.2.0 - * @since 4.3.0 Added the assertive live region. - */ - $( document ).ready( function() { - $containerPolite = $( '#wp-a11y-speak-polite' ); - $containerAssertive = $( '#wp-a11y-speak-assertive' ); - - if ( ! $containerPolite.length ) { - $containerPolite = addContainer( 'polite' ); - } - - if ( ! $containerAssertive.length ) { - $containerAssertive = addContainer( 'assertive' ); - } - }); - - /** @namespace wp.a11y */ - wp.a11y = wp.a11y || {}; - wp.a11y.speak = speak; - -}( window.wp, window.jQuery )); diff --git a/wp-includes/js/wp-a11y.min.js b/wp-includes/js/wp-a11y.min.js deleted file mode 100644 index 81c34e3f7b..0000000000 --- a/wp-includes/js/wp-a11y.min.js +++ /dev/null @@ -1 +0,0 @@ -window.wp=window.wp||{},function(a,b){"use strict";function c(b,c){e(),b=a.sanitize.stripTagsAndEncodeText(b),h===b&&(b+="\xa0"),h=b,g&&"assertive"===c?g.text(b):f&&f.text(b)}function d(a){a=a||"polite";var c=b("
",{id:"wp-a11y-speak-"+a,"aria-live":a,"aria-relevant":"additions text","aria-atomic":"true","class":"screen-reader-text wp-a11y-speak-region"});return b(document.body).append(c),c}function e(){b(".wp-a11y-speak-region").text("")}var f,g,h="";b(document).ready(function(){f=b("#wp-a11y-speak-polite"),g=b("#wp-a11y-speak-assertive"),f.length||(f=d("polite")),g.length||(g=d("assertive"))}),a.a11y=a.a11y||{},a.a11y.speak=c}(window.wp,window.jQuery); \ No newline at end of file diff --git a/wp-includes/version.php b/wp-includes/version.php index 8ef3817ef5..01c466655e 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -13,7 +13,7 @@ * * @global string $wp_version */ -$wp_version = '5.3-alpha-46166'; +$wp_version = '5.3-alpha-46167'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.