Your search did not match any results.

Mentions

Our HtmlEditor allows end-users to insert "mentions" and reference others within text or conversation threads as demonstrated in this demo. With this feature, you can introduce functionality that emulates capabilities found in collaboration tools like Microsoft Teams.

A "mention" is triggered by a marker. You are free to choose a "marker" of your choice (this demo uses the @ symbol to trigger a "mention"). User names are stored as items in a dataSource. Data can be retrieved from multiple data sources. When using multiple data sources, you must assign an unique marker to each.

To "mention" a user, simply enter the @ symbol and select the desired record from the "Mentions" drop-down user list. Like today's most popular collaboration tools, you can enter additional characters to filter the records displayed within the "Mentions" drop-down user list.

Backend API
@model IEnumerable<DevExtreme.NETCore.Demos.Models.EmployeeMention> @section ExternalDependencies { <script src="https://unpkg.com/devextreme-quill@21_2/dist/dx-quill.min.js"></script> } <div id="chat-window"> <div class="message dx-theme-background-color" tabindex="0"> <div class="photo"> <img alt="Kevin Carter" src="../../images/mentions/Kevin-Carter.png" /> </div> <div class="name"> Kevin Carter </div> <div class="date"> 07/03/19 - 12:22AM </div> <div class="text"> <span class="dx-mention" spellcheck="false"><span><span>@@</span>John Heart</span></span> What experience do you have in this field? </div> </div> <br /> <div class="message dx-theme-background-color" tabindex="0"> <div class="photo"> <img alt="John Heart" src="../../images/mentions/John-Heart.png" /> </div> <div class="name"> John Heart </div> <div class="date"> 07/03/19 - 12:25AM </div> <div class="text"> I've been in the audio/video industry since 2001, and I've been the CEO of DevAv since 2009. </div> </div> <br /> <div class="message dx-theme-background-color" tabindex="0"> <div class="photo"> <img alt="Kevin Carter" src="../../images/mentions/Kevin-Carter.png" /> </div> <div class="name"> Kevin Carter </div> <div class="date"> 07/03/19 - 12:26AM </div> <div class="text"> That's very interesting. <span class="dx-mention" spellcheck="false"><span><span>@@</span>Olivia Peyton</span></span>, what do you think? </div> </div> </div> @(Html.DevExtreme().HtmlEditor() .ID("html-editor") .Mentions(m => { m.Add().DataSource(Model).SearchExpr("text").DisplayExpr("text").ValueExpr("text"); }) .Content(@<text> <p> <span class="dx-mention" spellcheck="false" data-marker="@@" data-mention-value="Kevin Carter"><span><span>@@</span>Kevin Carter</span></span> I think John's expertise can be very valuable in our startup. </p> </text>) )
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using DevExtreme.NETCore.Demos.Models.SampleData; namespace DevExtreme.NETCore.Demos.Controllers { public class HtmlEditorController : Controller { public IActionResult Mentions() { return View(SampleData.EmployeeMentions); } } }
using System; using System.Collections.Generic; using System.Linq; namespace DevExtreme.NETCore.Demos.Models { public class EmployeeMention { public int id { get; set; } public string text { get; set; } public string team { get; set; } public string icon { get; set; } } }
using System; using System.Collections.Generic; using System.Linq; namespace DevExtreme.NETCore.Demos.Models.SampleData { public partial class SampleData { public static readonly IEnumerable<EmployeeMention> EmployeeMentions = new[] { new EmployeeMention { id = 1, text = "John Heart", team = "Engineering", icon = "../../images/mentions/John-Heart.png" }, new EmployeeMention { id = 2, text = "Kevin Carter", team = "Engineering", icon = "../../images/mentions/Kevin-Carter.png" }, new EmployeeMention { id = 3, text = "Olivia Peyton", team = "Management", icon = "../../images/mentions/Olivia-Peyton.png" }, new EmployeeMention { id = 4, text = "Robert Reagan", team = "Management", icon = "../../images/mentions/Robert-Reagan.png" }, new EmployeeMention { id = 5, text = "Cynthia Stanwick", team = "Engineering", icon = "../../images/mentions/Cynthia-Stanwick.png" }, new EmployeeMention { id = 6, text = "Brett Wade", team = "Analysis", icon = "../../images/mentions/Brett-Wade.png" }, new EmployeeMention { id = 7, text = "Greta Sims", team = "QA", icon = "../../images/mentions/Greta-Sims.png" } }; } }
#chat-window { background-color: rgba(191, 191, 191, 0.15); height: 350px; padding: 10px; } .dx-htmleditor { height: 100px; } #send { float: right; margin: 10px 0px; } .message { height: 85px; background-color: inherit; display: inline-block; max-width: 60%; border-radius: 5px; margin: 5px; padding: 10px; box-shadow: 0px 2px 6px rgba(0, 0, 0, 0.1); } .name { font-weight: bold; } .date { opacity: 0.5; } .photo { float: left; height: 100%; } .photo > img { width: 40px; height: 40px; display: block; border-radius: 40px; margin-right: 10px; }