annotate core/misc/announce.js @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 4c8ae668cc8c
children
rev   line source
Chris@0 1 /**
Chris@0 2 * DO NOT EDIT THIS FILE.
Chris@0 3 * See the following change record for more information,
Chris@0 4 * https://www.drupal.org/node/2815083
Chris@0 5 * @preserve
Chris@0 6 **/
Chris@0 7
Chris@0 8 (function (Drupal, debounce) {
Chris@0 9 var liveElement = void 0;
Chris@0 10 var announcements = [];
Chris@0 11
Chris@0 12 Drupal.behaviors.drupalAnnounce = {
Chris@0 13 attach: function attach(context) {
Chris@0 14 if (!liveElement) {
Chris@0 15 liveElement = document.createElement('div');
Chris@0 16 liveElement.id = 'drupal-live-announce';
Chris@0 17 liveElement.className = 'visually-hidden';
Chris@0 18 liveElement.setAttribute('aria-live', 'polite');
Chris@0 19 liveElement.setAttribute('aria-busy', 'false');
Chris@0 20 document.body.appendChild(liveElement);
Chris@0 21 }
Chris@0 22 }
Chris@0 23 };
Chris@0 24
Chris@0 25 function announce() {
Chris@0 26 var text = [];
Chris@0 27 var priority = 'polite';
Chris@0 28 var announcement = void 0;
Chris@0 29
Chris@0 30 var il = announcements.length;
Chris@0 31 for (var i = 0; i < il; i++) {
Chris@0 32 announcement = announcements.pop();
Chris@0 33 text.unshift(announcement.text);
Chris@0 34
Chris@0 35 if (announcement.priority === 'assertive') {
Chris@0 36 priority = 'assertive';
Chris@0 37 }
Chris@0 38 }
Chris@0 39
Chris@0 40 if (text.length) {
Chris@0 41 liveElement.innerHTML = '';
Chris@0 42
Chris@0 43 liveElement.setAttribute('aria-busy', 'true');
Chris@0 44
Chris@0 45 liveElement.setAttribute('aria-live', priority);
Chris@0 46
Chris@0 47 liveElement.innerHTML = text.join('\n');
Chris@0 48
Chris@0 49 liveElement.setAttribute('aria-busy', 'false');
Chris@0 50 }
Chris@0 51 }
Chris@0 52
Chris@0 53 Drupal.announce = function (text, priority) {
Chris@0 54 announcements.push({
Chris@0 55 text: text,
Chris@0 56 priority: priority
Chris@0 57 });
Chris@0 58
Chris@0 59 return debounce(announce, 200)();
Chris@0 60 };
Chris@0 61 })(Drupal, Drupal.debounce);