mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-04-03 12:28:51 +00:00
fix(mail): Recipients with umlaut (ü) trigerred the end of string
With chrome and edge and a german keyboard, the ü was considered as a separator keycode when adding recipients
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -12,10 +12,10 @@
|
||||
|
||||
this.$onInit = function() {
|
||||
$scope.isPopup = stateParent.isPopup;
|
||||
|
||||
this.account = stateAccount;
|
||||
this.autocomplete = {to: {}, cc: {}, bcc: {}};
|
||||
this.autosave = null;
|
||||
|
||||
this.isFullscreen = false;
|
||||
this.hideBcc = (stateMessage.editable.bcc.length === 0);
|
||||
this.hideCc = (stateMessage.editable.cc.length === 0);
|
||||
@@ -218,6 +218,12 @@
|
||||
$event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
if ($event.keyCode == 186 && $event.key == 'ü') { //Key code for separator ';' but is keycode for ü in german keyboard
|
||||
$event.stopPropagation();
|
||||
$event.preventDefault();
|
||||
let element = $window.document.getElementById($event.target.id);
|
||||
element.value = element.value + 'ü'
|
||||
}
|
||||
};
|
||||
|
||||
this.save = function (options) {
|
||||
|
||||
178
UI/WebServerResources/js/vendor/angular-material.js
vendored
178
UI/WebServerResources/js/vendor/angular-material.js
vendored
@@ -6135,95 +6135,95 @@ function InterimElementProvider() {
|
||||
(function(){
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.core.liveannouncer
|
||||
* @description
|
||||
* AngularJS Material Live Announcer to provide accessibility for Voice Readers.
|
||||
*/
|
||||
MdLiveAnnouncer.$inject = ["$timeout"];
|
||||
angular
|
||||
.module('material.core')
|
||||
.service('$mdLiveAnnouncer', MdLiveAnnouncer);
|
||||
|
||||
/**
|
||||
* @ngdoc service
|
||||
* @name $mdLiveAnnouncer
|
||||
* @module material.core.liveannouncer
|
||||
*
|
||||
* @description
|
||||
*
|
||||
* Service to announce messages to supported screenreaders.
|
||||
*
|
||||
* > The `$mdLiveAnnouncer` service is internally used for components to provide proper accessibility.
|
||||
*
|
||||
* <hljs lang="js">
|
||||
* module.controller('AppCtrl', function($mdLiveAnnouncer) {
|
||||
* // Basic announcement (Polite Mode)
|
||||
* $mdLiveAnnouncer.announce('Hey Google');
|
||||
*
|
||||
* // Custom announcement (Assertive Mode)
|
||||
* $mdLiveAnnouncer.announce('Hey Google', 'assertive');
|
||||
* });
|
||||
* </hljs>
|
||||
*
|
||||
*/
|
||||
function MdLiveAnnouncer($timeout) {
|
||||
/** @private @const @type {!angular.$timeout} */
|
||||
this._$timeout = $timeout;
|
||||
|
||||
/** @private @const @type {!HTMLElement} */
|
||||
this._liveElement = this._createLiveElement();
|
||||
|
||||
/** @private @const @type {!number} */
|
||||
this._announceTimeout = 100;
|
||||
}
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name $mdLiveAnnouncer#announce
|
||||
* @description Announces messages to supported screenreaders.
|
||||
* @param {string} message Message to be announced to the screenreader
|
||||
* @param {'off'|'polite'|'assertive'} politeness The politeness of the announcer element.
|
||||
*/
|
||||
MdLiveAnnouncer.prototype.announce = function(message, politeness) {
|
||||
if (!politeness) {
|
||||
politeness = 'polite';
|
||||
}
|
||||
|
||||
var self = this;
|
||||
|
||||
self._liveElement.textContent = '';
|
||||
self._liveElement.setAttribute('aria-live', politeness);
|
||||
|
||||
// This 100ms timeout is necessary for some browser + screen-reader combinations:
|
||||
// - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.
|
||||
// - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a
|
||||
// second time without clearing and then using a non-zero delay.
|
||||
// (using JAWS 17 at time of this writing).
|
||||
self._$timeout(function() {
|
||||
self._liveElement.textContent = message;
|
||||
}, self._announceTimeout, false);
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a live announcer element, which listens for DOM changes and announces them
|
||||
* to the screenreaders.
|
||||
* @returns {!HTMLElement}
|
||||
* @private
|
||||
*/
|
||||
MdLiveAnnouncer.prototype._createLiveElement = function() {
|
||||
var liveEl = document.createElement('div');
|
||||
|
||||
liveEl.classList.add('md-visually-hidden');
|
||||
liveEl.setAttribute('role', 'status');
|
||||
liveEl.setAttribute('aria-atomic', 'true');
|
||||
liveEl.setAttribute('aria-live', 'polite');
|
||||
|
||||
document.body.appendChild(liveEl);
|
||||
|
||||
return liveEl;
|
||||
};
|
||||
/**
|
||||
* @ngdoc module
|
||||
* @name material.core.liveannouncer
|
||||
* @description
|
||||
* AngularJS Material Live Announcer to provide accessibility for Voice Readers.
|
||||
*/
|
||||
MdLiveAnnouncer.$inject = ["$timeout"];
|
||||
angular
|
||||
.module('material.core')
|
||||
.service('$mdLiveAnnouncer', MdLiveAnnouncer);
|
||||
|
||||
/**
|
||||
* @ngdoc service
|
||||
* @name $mdLiveAnnouncer
|
||||
* @module material.core.liveannouncer
|
||||
*
|
||||
* @description
|
||||
*
|
||||
* Service to announce messages to supported screenreaders.
|
||||
*
|
||||
* > The `$mdLiveAnnouncer` service is internally used for components to provide proper accessibility.
|
||||
*
|
||||
* <hljs lang="js">
|
||||
* module.controller('AppCtrl', function($mdLiveAnnouncer) {
|
||||
* // Basic announcement (Polite Mode)
|
||||
* $mdLiveAnnouncer.announce('Hey Google');
|
||||
*
|
||||
* // Custom announcement (Assertive Mode)
|
||||
* $mdLiveAnnouncer.announce('Hey Google', 'assertive');
|
||||
* });
|
||||
* </hljs>
|
||||
*
|
||||
*/
|
||||
function MdLiveAnnouncer($timeout) {
|
||||
/** @private @const @type {!angular.$timeout} */
|
||||
this._$timeout = $timeout;
|
||||
|
||||
/** @private @const @type {!HTMLElement} */
|
||||
this._liveElement = this._createLiveElement();
|
||||
|
||||
/** @private @const @type {!number} */
|
||||
this._announceTimeout = 100;
|
||||
}
|
||||
|
||||
/**
|
||||
* @ngdoc method
|
||||
* @name $mdLiveAnnouncer#announce
|
||||
* @description Announces messages to supported screenreaders.
|
||||
* @param {string} message Message to be announced to the screenreader
|
||||
* @param {'off'|'polite'|'assertive'} politeness The politeness of the announcer element.
|
||||
*/
|
||||
MdLiveAnnouncer.prototype.announce = function(message, politeness) {
|
||||
if (!politeness) {
|
||||
politeness = 'polite';
|
||||
}
|
||||
|
||||
var self = this;
|
||||
|
||||
self._liveElement.textContent = '';
|
||||
self._liveElement.setAttribute('aria-live', politeness);
|
||||
|
||||
// This 100ms timeout is necessary for some browser + screen-reader combinations:
|
||||
// - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.
|
||||
// - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a
|
||||
// second time without clearing and then using a non-zero delay.
|
||||
// (using JAWS 17 at time of this writing).
|
||||
self._$timeout(function() {
|
||||
self._liveElement.textContent = message;
|
||||
}, self._announceTimeout, false);
|
||||
};
|
||||
|
||||
/**
|
||||
* Creates a live announcer element, which listens for DOM changes and announces them
|
||||
* to the screenreaders.
|
||||
* @returns {!HTMLElement}
|
||||
* @private
|
||||
*/
|
||||
MdLiveAnnouncer.prototype._createLiveElement = function() {
|
||||
var liveEl = document.createElement('div');
|
||||
|
||||
liveEl.classList.add('md-visually-hidden');
|
||||
liveEl.setAttribute('role', 'status');
|
||||
liveEl.setAttribute('aria-atomic', 'true');
|
||||
liveEl.setAttribute('aria-live', 'polite');
|
||||
|
||||
document.body.appendChild(liveEl);
|
||||
|
||||
return liveEl;
|
||||
};
|
||||
|
||||
})();
|
||||
(function(){
|
||||
|
||||
Reference in New Issue
Block a user