summaryrefslogtreecommitdiff
path: root/web-ui/app/js/mail_view/ui/recipients
diff options
context:
space:
mode:
authorGiovane <giovaneliberato@gmail.com>2015-10-21 17:14:39 -0200
committerGiovane <giovaneliberato@gmail.com>2015-10-22 14:18:54 -0200
commit6d49949a73cf4757b4f616ee9398863d8ba62988 (patch)
treeaec7aeaf13bf45a8c3e0ee2a7aff4e4e85642457 /web-ui/app/js/mail_view/ui/recipients
parentfc88b2d61d3bf1a09c400cc1e3e3170036377b1a (diff)
Make recipients_input more intelligent and enable tokenize on space #492
- Address can now be just email ou canonical emails(User <user@example.com>) - Trigger tokenize addresses emails when type space
Diffstat (limited to 'web-ui/app/js/mail_view/ui/recipients')
-rw-r--r--web-ui/app/js/mail_view/ui/recipients/recipients_input.js13
1 files changed, 11 insertions, 2 deletions
diff --git a/web-ui/app/js/mail_view/ui/recipients/recipients_input.js b/web-ui/app/js/mail_view/ui/recipients/recipients_input.js
index 012d7fb9..4c70e180 100644
--- a/web-ui/app/js/mail_view/ui/recipients/recipients_input.js
+++ b/web-ui/app/js/mail_view/ui/recipients/recipients_input.js
@@ -33,7 +33,8 @@ define([
186: 'semicolon',
188: 'comma',
13: 'enter',
- 27: 'esc'
+ 27: 'esc',
+ 32: 'space'
},
EVENT_FOR = {
8: events.ui.recipients.deleteLast,
@@ -108,7 +109,8 @@ define([
this.recipientSelected = function (event, data) {
var value = (data && data.value) || this.$node.val();
var that = this;
- _.each(value.split(/[,;]/), function(address) {
+ var addresses = this.extractAdresses(value);
+ _.each(addresses, function(address) {
if (!_.isEmpty(address.trim())) {
that.trigger(that.$node, events.ui.recipients.entered, { name: that.attr.name, address: address.trim() });
}
@@ -116,6 +118,13 @@ define([
reset(this.$node);
};
+ this.extractAdresses = function(rawAddresses){
+ var simpleAddressMatch = /[^<\w,;]?([^\s<;,]+@[^\s>;,]+)/;
+ var canonicalAddressMatch = /([^,;\s][^,;]+<[^\s;,]+@[^\s;,]+>)/;
+ var addressMatch = new RegExp([simpleAddressMatch.source, '|', canonicalAddressMatch.source].join(''), 'g');
+ return rawAddresses.match(addressMatch);
+ };
+
this.init = function () {
this.$node.typeahead({
hint: true,