}
};
+ /**
+ * Highlight words in search results.
+ *
+ * @param {String} content HTML to search.
+ * @param {String} searchText Search text.
+ * @return {String} searchText with search wrapped in matchtext span.
+ */
+ var highlightSearch = function(content, searchText) {
+ if (!content) {
+ return '';
+ }
+ var regex = new RegExp('(' + searchText + ')', 'gi');
+ return content.replace(regex, '<span class="matchtext">$1</span>');
+ };
+
+
/**
* Render contacts in the contacts search results.
*
var contactsCount = results.contacts.length;
var nonContactsCount = results.noncontacts.length;
+ if (contactsCount) {
+ results.contacts.forEach(function(contact) {
+ contact.highlight = highlightSearch(contact.fullname, text);
+ });
+ }
+
+ if (nonContactsCount) {
+ results.noncontacts.forEach(function(contact) {
+ contact.highlight = highlightSearch(contact.fullname, text);
+ });
+ }
+
return $.when(
contactsCount ? renderContacts(root, results.contacts) : true,
nonContactsCount ? renderNonContacts(root, results.noncontacts) : true
})
.then(function(messages) {
if (messages.length) {
+ messages.forEach(function(message) {
+ message.lastmessage = highlightSearch(message.lastmessage, text);
+ });
return renderMessages(root, messages)
.then(function() {
return messages.length;
{{#showonlinestatus}}
<span class="contact-status {{#isonline}}online{{/isonline}}"></span>
{{/showonlinestatus}}
- <h6 class="ml-2 font-weight-bold" data-region="searchable">{{fullname}}</h6>
+ <h6 class="ml-2 font-weight-bold">{{#highlight}}{{{highlight}}}{{/highlight}}{{^highlight}}{{fullname}}{{/highlight}}</h6>
<div
class="ml-auto align-self-end {{^isblocked}}hidden{{/isblocked}}"
data-region="block-icon-container"
aria-hidden="true"
style="height: 38px"
>
- <h6 class="ml-2 font-weight-bold" data-region="searchable">{{fullname}}</h6>
+ <h6 class="ml-2 font-weight-bold">{{#highlight}}{{{highlight}}}{{/highlight}}{{^highlight}}{{fullname}}{{/highlight}}</h6>
{{#isblocked}}
<div class="ml-auto align-self-end">
{{#pix}} t/block, core, {{#str}} contactblocked, message {{/str}} {{/pix}}