81 lines
2.3 KiB
JavaScript
81 lines
2.3 KiB
JavaScript
/**
|
|
* @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);
|