Mercurial > hg > isophonics-drupal-site
diff core/modules/toolbar/js/views/ToolbarAuralView.es6.js @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 129ea1e6d783 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/toolbar/js/views/ToolbarAuralView.es6.js Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,71 @@ +/** + * @file + * A Backbone view for the aural feedback of the toolbar. + */ + +(function (Backbone, Drupal) { + Drupal.toolbar.ToolbarAuralView = Backbone.View.extend(/** @lends Drupal.toolbar.ToolbarAuralView# */{ + + /** + * Backbone view for the aural feedback of the toolbar. + * + * @constructs + * + * @augments Backbone.View + * + * @param {object} options + * Options for the view. + * @param {object} options.strings + * Various strings to use in the view. + */ + initialize(options) { + this.strings = options.strings; + + this.listenTo(this.model, 'change:orientation', this.onOrientationChange); + this.listenTo(this.model, 'change:activeTray', this.onActiveTrayChange); + }, + + /** + * Announces an orientation change. + * + * @param {Drupal.toolbar.ToolbarModel} model + * The toolbar model in question. + * @param {string} orientation + * The new value of the orientation attribute in the model. + */ + onOrientationChange(model, orientation) { + Drupal.announce(Drupal.t('Tray orientation changed to @orientation.', { + '@orientation': orientation, + })); + }, + + /** + * Announces a changed active tray. + * + * @param {Drupal.toolbar.ToolbarModel} model + * The toolbar model in question. + * @param {HTMLElement} tray + * The new value of the tray attribute in the model. + */ + onActiveTrayChange(model, tray) { + const relevantTray = (tray === null) ? model.previous('activeTray') : tray; + // Current activeTray and previous activeTray are empty, no state change + // to announce. + if (!relevantTray) { + return; + } + const action = (tray === null) ? Drupal.t('closed') : Drupal.t('opened'); + const trayNameElement = relevantTray.querySelector('.toolbar-tray-name'); + let text; + if (trayNameElement !== null) { + text = Drupal.t('Tray "@tray" @action.', { + '@tray': trayNameElement.textContent, '@action': action, + }); + } + else { + text = Drupal.t('Tray @action.', { '@action': action }); + } + Drupal.announce(text); + }, + }); +}(Backbone, Drupal));