Chris@0: /** Chris@0: * DO NOT EDIT THIS FILE. Chris@0: * See the following change record for more information, Chris@0: * https://www.drupal.org/node/2815083 Chris@0: * @preserve Chris@0: **/ Chris@0: Chris@0: (function (Drupal, debounce) { Chris@0: var liveElement = void 0; Chris@0: var announcements = []; Chris@0: Chris@0: Drupal.behaviors.drupalAnnounce = { Chris@0: attach: function attach(context) { Chris@0: if (!liveElement) { Chris@0: liveElement = document.createElement('div'); Chris@0: liveElement.id = 'drupal-live-announce'; Chris@0: liveElement.className = 'visually-hidden'; Chris@0: liveElement.setAttribute('aria-live', 'polite'); Chris@0: liveElement.setAttribute('aria-busy', 'false'); Chris@0: document.body.appendChild(liveElement); Chris@0: } Chris@0: } Chris@0: }; Chris@0: Chris@0: function announce() { Chris@0: var text = []; Chris@0: var priority = 'polite'; Chris@0: var announcement = void 0; Chris@0: Chris@0: var il = announcements.length; Chris@0: for (var i = 0; i < il; i++) { Chris@0: announcement = announcements.pop(); Chris@0: text.unshift(announcement.text); Chris@0: Chris@0: if (announcement.priority === 'assertive') { Chris@0: priority = 'assertive'; Chris@0: } Chris@0: } Chris@0: Chris@0: if (text.length) { Chris@0: liveElement.innerHTML = ''; Chris@0: Chris@0: liveElement.setAttribute('aria-busy', 'true'); Chris@0: Chris@0: liveElement.setAttribute('aria-live', priority); Chris@0: Chris@0: liveElement.innerHTML = text.join('\n'); Chris@0: Chris@0: liveElement.setAttribute('aria-busy', 'false'); Chris@0: } Chris@0: } Chris@0: Chris@0: Drupal.announce = function (text, priority) { Chris@0: announcements.push({ Chris@0: text: text, Chris@0: priority: priority Chris@0: }); Chris@0: Chris@0: return debounce(announce, 200)(); Chris@0: }; Chris@0: })(Drupal, Drupal.debounce);